DOM遍历的jQuery最佳实践

时间:2013-08-21 03:19:42

标签: jquery dom

我目前正在通过CodeSchool.com学习jQuery,他们提到最好这样做:

$(document).ready(function() {
    $(".exampleclass").on('click', 'button', function() {
        //some method
    });
});

而不是:

$(document).ready(function() {
    $(".exampleclass button").on('click', function() {
        //some method
    });
});

他们没有说明原因。据我所知,两者之间似乎没有区别,事实上我发现后者更容易。

第一个代码块是否更可接受?它运行得更快,还是有任何特别的优势?

1 个答案:

答案 0 :(得分:4)

主要区别在于前者能够处理动态添加的button,因为它遵循事件委托模型。

功能上的区别是前者为每个button元素附加了一个单击处理程序,该元素在脚本执行时存在于dom中,而后者将单个处理程序附加到.exampleclass元素,当一个事件在元素内发生并且它通过事件传播到达exampleclass元素时,它再次测试目标元素,在这种情况下传递的选择器button如果测试成功则调用注册的处理程序< / p>