我有一些代码,我循环遍历页面上的所有选择框,并将.hover事件绑定到它们,以便在它们的宽度上做一些麻烦mouse on/off.
这发生在页面准备就绪并且工作得很好.
我遇到的问题是,我在初始循环后通过Ajax或DOM添加的任何选择框都不会受到事件限制.
我找到了这个插件(jQuery Live Query Plugin),但在我用插件添加另外5k到我的页面之前,我想知道是否有人知道这样做的方法,无论是直接使用jQuery还是通过其他选项.
我试图理解使用jQuery .on()方法的直接和委托事件处理程序之间的这种特殊区别.具体而言,本段最后一句:
当
selector被提供时,事件处理程序被称为委托.当事件直接发生在绑定元素上时,不会调用处理程序,但仅适用于与选择器匹配的后代(内部元素).jQuery将事件从事件目标起泡到附加处理程序的元素(即最里面到最外层的元素),并为匹配选择器的路径上的任何元素运行处理程序.
"运行任何元素的处理程序"是什么意思?我做了一个测试页面来试验这个概念.但是以下两个结构导致了相同的行为:
$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
Run Code Online (Sandbox Code Playgroud)
要么,
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});
Run Code Online (Sandbox Code Playgroud)
也许有人可以参考一个不同的例子来澄清这一点?谢谢.
javascript jquery event-bubbling event-binding jquery-events