Javascript jQuery on()文档
for jQuery的Javascript jQuery on()文档,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,for jQuery的on()函数是否不正确(或不清楚)?考虑这个代码: <div> <span> <div> <input type="button" value="click me!" /> </div> </span> </div> $(document).on("click", function() { console.lo
on()
函数是否不正确(或不清楚)?考虑这个代码:
<div>
<span>
<div>
<input type="button" value="click me!" />
</div>
</span>
</div>
$(document).on("click", function() {
console.log(this.toString());
});
$(文档)。在(“单击”,函数()上){
console.log(this.toString());
});
文件状态
选择器一个选择器字符串,用于筛选选定对象的后代
触发事件的元素。如果选择器为空或省略,
事件始终在到达选定元素时触发
单击按钮只会导致文档本身的一个console.log,而$(文档)。在(“单击”、“*”,function()…
上会导致许多
我知道Stack Overflow社区不负责jQuery文档,但他们不应该说,当忽略选择器时,事件仅在到达所选元素时被触发?或者我对事件委派有什么理解不正确吗
就我个人而言,我认为这已经足够清楚了。当忽略选择器时,事件会在到达所选元素时触发。在我看来,“始终”一词并不会真正改变其含义。事件总是在到达所选元素时触发(请注意,如果调用了类似于
stopPropagation
的函数,则事件不会到达所选元素,因此不会被触发)
当存在选择器时,当事件到达源于与选择器匹配的元素的选定元素时,将触发该事件
使用通用选择器*
时,事件目标和所选元素之间的每个元素都将触发事件
正如您在评论中所述,上的提供了在jQuery 1.7+中绑定事件所需的所有功能:
从jQuery1.7开始,.on()方法提供了所需的所有功能
用于附加事件处理程序
如果不使用选择器,则不存在事件委派。从文档中:
如果选择器被省略或为null,则事件处理程序称为
直接或直接绑定。每次事件发生时都会调用处理程序
发生在选定图元上,无论它是否直接发生在
元素或来自子代(内部)元素的气泡
当提供选择器时,事件处理程序称为
委托。事件直接在上发生时不调用处理程序
绑定元素,但仅适用于
匹配选择器。jQuery将事件从事件目标向上冒泡
到处理程序所附加的元素(即,最内层到
最外层的元素),并为沿着该元素的任何元素运行处理程序
与选择器匹配的路径
基本上,.on
是在做jQuery的事情——根据参数,它被重载来做完全不同的事情。就我个人而言,我更喜欢.delegate
进行委派,而.bind
进行正常事件,因为它们更清晰,我希望它们不会在以后的版本中被删除。您希望$(“#mydiv”)。在('click',function(){})
tot rigger上单击#myotherdiv
时?前提是相同的,它将根据您的参数有多模糊/具体来工作。“reach”一词似乎暗示“only”一词。不确定我是否理解,因为文档对我来说非常清楚。如果您向$(文档)添加单击事件处理程序然后,只有文档附加了事件处理程序。如果您将它添加到文档中的每个元素,如文档中所述,它将附加到文档和所有子元素,这正是它所做的。@mblase75-我认为您的答案是迄今为止最好的-您能给出答案吗?这也意味着event whereisPropagationStopped()
可能没有到达正在侦听事件的元素。因此,似乎省略选择器可以使上的完全替代bind
?$(“X”)。绑定(“单击”,函数
==$(“X”)。打开(“单击”,功能
?确实如此。这就是
上的
的全部要点,它包含了以前可以将事件绑定为一个事件的所有不同方式(bind
、delegate
和live
不再需要).1-谢谢你的回答。我想问题的根源是我没有像Ensalija告诉我的那样充分阅读文档。希望我不是世界上唯一一个有这个问题的开发人员…咧嘴一笑谢谢你-糟糕的开发人员,更耐心地阅读文档,糟糕的开发人员。。。