Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery on()文档_Javascript_Jquery_Dom Events - Fatal编程技术网

Javascript jQuery on()文档

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

for jQuery的
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 where
isPropagationStopped()
可能没有到达正在侦听事件的元素。因此,似乎省略选择器可以使
上的
完全替代
bind
$(“X”)。绑定(“单击”,函数
==
$(“X”)。打开(“单击”,功能
?确实如此。这就是
上的
的全部要点,它包含了以前可以将事件绑定为一个事件的所有不同方式(
bind
delegate
live
不再需要).1-谢谢你的回答。我想问题的根源是我没有像Ensalija告诉我的那样充分阅读文档。希望我不是世界上唯一一个有这个问题的开发人员…咧嘴一笑谢谢你-糟糕的开发人员,更耐心地阅读文档,糟糕的开发人员。。。