我有一个附加到事件的处理程序,我希望它仅在由人触发而不是由trigger()方法触发时执行。我该如何区分?
例如,
$('.checkbox').change(function(e){ if (e.isHuman()) { alert ('human'); } }); $('.checkbox').trigger('change'); //doesn't alert
您可以检查e.originalEvent:如果已定义,则点击是人为的:
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(); });