我读过无数篇文章,了解如何使用jQuerydelegate比使用"live"事件更高效。
因此,我在将现有的实时代码转换为使用delegate时遇到了问题:
$("#tabs li:eq(0)").live('click',function(){ //...code });
$('#A > div.listing, #B > div.listing, #C > div.listing').live('mouseover',function(){ // ...code });
当我用我认为更有效的委托代码替换前面的代码时,我的页面没有加载。
$("#tabs li:eq(0)").delegate('click',function(){ //...code });
$('#A > div.listing, #B > div.listing, #C > div.listing').delegate('mouseover',function(){ // ...code });
你知道为什么我的委托代码不起作用吗?还有,关于如何使它更有效有什么建议吗?
- 更新**:
问题的关键在于,"#tab"和"#A,#B,#C"在页面加载时都不存在。这些属性是通过AJAX调用动态插入到页面中的。因此,这是否意味着我必须使用live over delegate?
1条答案
按热度按时间elcex8rz1#
更新您的更新:)-是的,如果是这种情况,请坚持使用
.live()
,除非您的DOM非常深,否则性能上的差异非常小。**上一个答案:**您的委托函数应如下所示:
这取决于
#tabs
不在任何 AJAX 调用替换的内容中,#A
、#B
和#C
也是如此。.delegate()
的格式如下: