假设我需要在'click'
上设置<div class="cool-div">
事件监听器。让我们说它有一个祖先。
<div class="cool-ancestor">
...
<div class="cool-div">
...
</div>
我应该使用以下哪些代码来获得更好的性能?为什么?
a) $(document).on('click', '.cool-div', function(){...})
b) $('.cool-ancestor').on('click', '.cool-div', function(){...})
c) $('.cool-div').on('click', function(){...})
情况1
<div class="cool-div">
。情况2
<div class="cool-div">
。答案 0 :(得分:1)
如果你的表现很好,那么删除jquery 就是第一件事。只是享受Vanilla-JS performance。
对于选择元素,JQuery速度较慢,这是一件事,但讨厌JQuery的另一个原因是它会自动将事件侦听器附加到某些元素。
例如,如果您使用 jquery 1.11 ,则所有a
代码都会设置blur
和focus
事件侦听器。
如果您想在导航器中构建功能强大的应用程序,您需要知道导航器如何处理您的代码
所以,here is a wonderful article about DOM events
reflow and repaints
并a good ressource about what will call a reflow
如果您没有时间阅读上述文章,则应考虑以下内容:
input.focus()
导致 reflow 。
希望能帮助到你,
最好的问候,
答案 1 :(得分:0)
如果您的代码没有生成任何子div
<div class="cool-div">
动态然后直接完美且工作顺利。否则最好使用委托,因为有时直接可能不适用于动态生成的元素。