给定这两个关于事件触发器的jquery
$(document).on("click", "a[data-trigger='colorbox']",function(e){
$("a[data-trigger='colorbox']").on("click",function(e){
当我使用第一个颜色框时,我必须单击锚标记两次才能触发颜色框。对于后续点击,不需要第二次点击即可触发。但对于第二个,颜色框在第一次单击时被触发。两者有什么区别吗?
我的功能内容如下
e.preventDefault();
var currentTarget = $(e.currentTarget);
currentTarget.colorbox({inline : true, href : currentTarget.data("href")});
$(document).on("click", "a[data-trigger='colorbox']",function(e){
这会将单击事件绑定到文档及其中的所有子元素。然后,此单击事件检查单击的元素是否与过滤器匹配a[data-trigger='colorbox']
后者:
$("a[data-trigger='colorbox']").on("click",function(e){
将点击事件绑定到a[data-trigger='colorbox']
直接地。
现在,如果您的元素是动态的,您将需要使用第一个元素。因为这意味着您不必不断重新绑定您的点击事件。如果您的元素是静态的,那么您想使用后者,因为它更有效。
第三种方法(或更有效的方法来执行第一个选项)是将其绑定到parent与静态元素相反的元素document
然后过滤被单击的元素,即
$(parent).on("click", "a[data-trigger='colorbox']",function(e){
这更有效,因为它不需要捕获整个文档的点击事件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)