性能:jquery.live()与按需创建特定的侦听器?
我有一个包含新闻项目标题的页面,点击每一个ajax加载包括照片缩略图在内的完整新闻项目。 我想在缩略图上附上一个灯箱,以显示更大的照片。
我有两个选择(我认为):
- 。生活()
。
$('img .thumb').live('click', function())
- 在新闻项目点击的回调上添加特定的基于id的侦听器
。
$('div.news_item').click(function(){ var id = $(this).attr('id'); //click show_news_item(), //callback function(){$(id+' .thumb').lightbox();} })
在.live()
你有1个监听器而不是绑定的n
事件监听器,所以如果你有:
- 大量元素或动态创建/加载的元素
- 嵌入DOM不是太深,或者是你有很多元素(这里的成本/效益比)
在你的情况下,我会使用.live()
,像这样:
$('div.news_item').live('click', function(){ });
或者,如果您的class="news_item"
元素位于容器中,您可以选择如下:
News 1 News 2
您可以像这样使用.delegate()
(更有效,更少的事件冒泡DOM):
$("#newsIems").delegate(".news_item", "click", function() { });
注意:函数内部的代码仍然相同, $(this)
仍指向具有这些选项的相同元素。