使用$(document).on('click',,,)

时间:2015-05-28 18:55:00

标签: javascript jquery performance dom

使用$(document).on('click',...,function) EDIT是否有任何不利之处:[我的意思是$(文件).on('click',#xzz,function)]over $('#xyz')。click(功能)`??

特别是我发现它在我必须使用带控件的部分视图的页面中非常有用。我甚至在部分视图存在之前就将$(document).on ()'s与document.ready一起调用,当我得到局部视图时,我不必重新连接事件。

但是我想知道这种方法有什么缺点吗?

谢谢

3 个答案:

答案 0 :(得分:4)

如果您将事件处理程序添加到document,则必须处理所有事件,即使是您不想处理的事件。

而不是document,在委派事件时总是使用最接近目标的容器。

答案 1 :(得分:1)

不同之处在于冒泡。从性能的角度来看,前者在需要绑定大量元素的情况下要好得多。

<ul id="list">
  <li></li>
  <li></li>
  ... a thousand more <li>'s
  </ul>

在这种情况下,$('#list').on('click', 'li', function() { });会比$('li').click(function() { });好得多。这是1个事件与100万个事件和2个事件之间的区别。我还建议不要将这些元素绑定到文档,除非你别无选择。最快的选择器将绑定到ID。

答案 2 :(得分:0)

$(document).on('click',...,function ) 

将在整个文档上注册一个点击事件,因此点击页面上的任意位置都会触发它。

$('#xyz').click(function)

将仅在id = xyz

的元素上注册触发器