小编典典

检查事件是否由人触发

javascript

我有一个附加到事件的处理程序,我希望它仅在由人触发而不是由trigger()方法触发时执行。我该如何区分?

例如,

$('.checkbox').change(function(e){
  if (e.isHuman())
  {
    alert ('human');
  }
});

$('.checkbox').trigger('change'); //doesn't alert

阅读 287

收藏
2020-05-01

共1个答案

小编典典

您可以检查e.originalEvent:如果已定义,则点击是人为的:

$('.checkbox').change(function(e){
  if (e.originalEvent !== undefined)
  {
    alert ('human');
  }
});

我在jsfiddle中的例子:

<input type='checkbox' id='try' >try
<button id='click'>Click</button>

$("#try").click(function(event) {
    if (event.originalEvent === undefined) {
        alert('not human')
    } else {
        alert(' human');
    }


});

$('#click').click(function(event) {
    $("#try").click();
});
2020-05-01