我目前正在通过CodeSchool.com学习jQuery,他们提到最好这样做:
$(document).ready(function() {
$(".exampleclass").on('click', 'button', function() {
//some method
});
});
而不是:
$(document).ready(function() {
$(".exampleclass button").on('click', function() {
//some method
});
});
他们没有说明原因。据我所知,两者之间似乎没有区别,事实上我发现后者更容易。
第一个代码块是否更可接受?它运行得更快,还是有任何特别的优势?
答案 0 :(得分:4)
主要区别在于前者能够处理动态添加的button
,因为它遵循事件委托模型。
功能上的区别是前者为每个button
元素附加了一个单击处理程序,该元素在脚本执行时存在于dom中,而后者将单个处理程序附加到.exampleclass
元素,当一个事件在元素内发生并且它通过事件传播到达exampleclass
元素时,它再次测试目标元素,在这种情况下传递的选择器button
如果测试成功则调用注册的处理程序< / p>