jQuery $(document).on('click', selector, ... )和$(selector).on('click'的区别

18

我过去一直使用:

$(selector).on('click', function )

但是今天我在一个在docready之后通过ajax调用生成的对象上绑定这个事件时,绑定无效。

通过谷歌搜索,我看到了如下内容:

$(document).on( event, selector, function ) 

语法。更改后,我的代码可以正常工作。

我暂停了jquery,感觉错过了一些东西,这两种方法有什么真正的区别?它们是什么?

现在这种后期语法是绑定新元素的唯一方法(livequery插件曾经提供的目的)吗?


7
这个链接会提供你可能需要的所有答案。 - Rory McCrossan
2
这两者确实存在真正的区别,并且它们在文档中得到了详细解释。 - adeneo
5
请特别注意 直接绑定与委托绑定事件 部分。 - Jonathan Lonowski
1个回答

23

第一个示例直接将事件侦听器绑定到元素上。它为每个元素添加了一个单独的侦听器,并且只会响应在添加侦听器时已经存在于DOM中的元素上的事件。

第二个示例将事件侦听器绑定到文档对象上。它将检查任何冒泡到文档对象的事件,并在触发函数之前测试事件开始时所在的元素是否与选择器匹配。它不需要元素在绑定侦听器时存在于文档中。该事件可能被捕获(由另一个侦听器)并停止传播,而不会冒泡到文档对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接