什么是更昂贵的性能:将事件绑定到框内的所有元素或绑定到整个框?

时间:2013-08-28 15:02:51

标签: javascript jquery performance javascript-events scalability

我在网站上有一个包含更新的Feed - 就像Facebook或Google+一样。此外,当页面向下滚动时,底部会加载越来越多的更新(滚动条到达页面底部时为+20)。
每个更新都是一个分隔的框,里面有很多链接。我需要将'click'事件绑定到每个框内的所有这些链接以及新的内容。

从性能角度来看哪个更便宜?
1)将事件绑定到每个框内的所有链接:

$(box).find('.link1').on('click', …);
$(box).find('.link2').on('click', …);
…

2)将一个事件绑定到盒子本身(甚至绑定到Feed包装器),卡车目标元素点击执行基于点击目标的必要功能:

$(box).on('click', function(e) {
  var target = $(e.target);

  if (target.is('.link1')) …
  if (target.is('.link2')) …
});

Facebook / Google +如何做?将事件绑定到单个链接或将事件绑定到整个框,然后根据目标进行委派?

目前,我觉得浏览器需要大量内存才能让所有必需的DOM对象都有事件绑定,特别是当我滚动这么多时,有200多个更新。

1 个答案:

答案 0 :(得分:0)

这是事件委派的主要案例:

$('someContainer').on('click', 'a', function(e) {
    //'this' is the event target
});

请参阅documentation for on(),特别是有关“直接和委派事件”的部分。