我很困惑,在使用这个作为我选择了在$(文件), click event
? 任何差异或COS仅使用父母选择的呢? 他们都产生相同的输出,但有没有像执行速度的任何因素?
你可以测试这个FIDDLE
var counter = 0;
使用父选择
$(".parent").on("click", "button.btn", function(){
$(".parent").append("<button class = 'btn'> new button " + (++counter) + "</button><br />");
});
或$(文件)
$(document).on("click","button.btn",function(){
$(".parent").append("<button class = 'btn'> new button " + (++counter) + "</button><br />");
});
您需要提供哪些没有得到动态生成最接近的父母选择和所有人都为之需要事件委派应该是静态的父元素的子元素的未来元素。
当涉及到性能,委派事件相比,附加到页面的文档或身体最接近静态父是比较可行的。
通常应绑定到包含要委托给动态元素最严格的元素。 代表团的工作方式是,内部的jQuery处理程序每次运行时在绑定到任何地方元素出现。 此处理程序进行检查,看是否在目标选择参数匹配,如果这样调用你的处理函数。
所以,如果你使用$(document).on
,就必须做到这一点您可以随时点击页面上的任何地方 。 但是如果你使用$(".parent").on
它只有做检查,当你点击父元素里面。 这是在浏览器上的开销少。
此外,代表团取决于事件汩汩流出到你绑定的元素。 如果有一个包含元素button.btn
,它有调用click处理event.stopPropagation()
这将取消冒泡,和jQuery的内部处理程序将永远不会被运行。 绑定到家长应使这种可能性不大。
文章来源: Difference of $(document) and $('parentSelector') for adding events of dynamically add element?