我们使用 jQuery 为 DOM 元素附加我们的事件处理程序
1)直接——
$(#elemId).bind("click",function(){ …//event handler code}); OR
2) 委托。—
$(document).delegate("#elemId","click",function(){ …//event handler code});
我们还遇到了一种情况,即我们需要从我们的代码中手动执行这些附加的事件处理程序。为此,我们可以在元素上使用 jQuery 中的任一 .trigger() API。
$(#elemId).trigger("click")
在某些情况下,我们只想执行我们附加的事件处理程序,但我们不想执行与该事件关联的默认操作。我们可以通过在 jQuery on element 中使用 .triggerHandler() API 来实现这一点
$(#elemId).triggerHandler("click");
例如,我们可以在“复选框”列表上附加“点击”事件,并且我们可以在任何复选框被选中/取消选中时执行事件处理程序。在这里,复选框的单击事件的默认操作是该复选框被选中/未选中(即复选框的状态发生变化。)所以。在某些情况下,我们可能不想在单击复选框时更改复选框的状态,但我们希望在事件处理程序中执行代码。如前所述,这可以在 jQuery 中通过调用 .triggerHandler() 而不是 .trigger 来实现() 触发事件。
但是,当我们通过委托将事件附加到 DOM 元素时,这不起作用。在事件委托的情况下,在不执行默认操作的情况下执行事件处理程序的另一种方法是什么?
请检查以下 JSfiddles 的区别:用于直接事件处理:
http://jsfiddle.net/g2TWh/7/
对于委托事件处理:
http://jsfiddle.net/g2TWh/8/
(请注意,当您单击“运行”时,事件处理函数中的警报不会出现)