Javascript JQuery:如何使用;“代表”;而不是",;“活”吗;?

Javascript JQuery:如何使用;“代表”;而不是",;“活”吗;?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我读过无数关于使用JQuery比使用“live”事件更高效的文章 因此,我很难将现有的实时代码转换为使用委托 $("#tabs li:eq(0)").live('click',function(){ //...code }); $('#A > div.listing, #B > div.listing, #C > div.listing').live('mouseover',function(){ // ...code }); 当我用我认为更有效的委托代码替换前面的代码时,我

我读过无数关于使用JQuery比使用“live”事件更高效的文章

因此,我很难将现有的实时代码转换为使用委托

$("#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 });
知道我的委托代码为什么不起作用吗?还有,关于如何提高效率的建议

更新


问题的一部分在于,网页加载时,“#选项卡”和“#A、#B、#C”都不在网页上。这些属性通过AJAX调用动态插入页面。因此,这是否意味着我必须使用live over delegate?

更新:)-是的,请坚持使用
.live()
如果是这种情况,除非您的DOM非常深,否则性能上会有无穷小的差异


前面的答案:您的委托函数应该如下所示:

$("#tabs").delegate('li:eq(0)', 'click', function(){ //...code });
$('#A, #B, #C').delegate('> div.listing', 'mouseover', function(){ // ...code });
这取决于
#选项卡
不在作为任何ajax调用的一部分被替换的内容中,这与
#A
#B
#C
相同。其格式如下:


@尼克·克雷弗,问题是,网页加载时,“#标签”和“#A、#B、#C”都不在网页上。这些属性通过AJAX调用动态插入页面。因此,当我根据您的代码进行更改时,我的页面仍然没有加载。有什么想法导致了我的问题吗?@JacobD-如果没有这些想法,那么您需要坚持使用
.live()
,或者在执行此绑定时转到确实存在的更高祖先
.delegate()
实际上使用的是
.live()
,它不是完全的替代品。
$(selectorOrNonReplacedParent).delegate(childSelector, event, function);