我在网站上有一个包含更新的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多个更新。
答案 0 :(得分:0)
这是事件委派的主要案例:
$('someContainer').on('click', 'a', function(e) {
//'this' is the event target
});
请参阅documentation for on()
,特别是有关“直接和委派事件”的部分。