2011-03-16 71 views
0

我有以下脚本,只要是静态的HTML单击事件使用jQuery现场

$('li.tab').each(function(index) { 
    $("#tab" + index).click(function() {$("#tabs").tabs("select" , index );}); 
}); 

这是静态的HTML是什么样子的工作原理:

<div class="item" id="tab0"><div class="icon" style="background-image: url('http://intranet/icon0.png');"></div> Default</div> 
<div class="item" id="tab1"><div class="icon" style="background-image: url('http://intranet/icon1.png');"></div> Reports</div> 
<div class="item" id="tab2"><div class="icon" style="background-image: url('http://intranet/icon2.png');"></div> Other</div> 

如果我使用一个数据库要通过jquery/ajax生成3个html行,我必须使用jquery live函数来连接上面脚本中的click事件吗?

如果是,我该怎么做?

回答

1

是的,你需要使用现场

$('li.tab').each(function(index) { 

    $("#tab" + index).live('click', function() { 
    // ... 
    }); 

}); 
1
$('.your_target_class').live('click', function() { 
    //your code here. 
}); 
1

相反的.live(),使用.delegate(),它绑定到围绕着你所定位的对象。你可以链接.delegate()加上它更好的性能明智(你可以在这里查看它http://jquerybyexample.blogspot.com/2010/08/bind-vs-live-vs-delegate-function.html

此外,不要忘记使用.die()/。undelegate(),否则你运行风险如果您的.live()声明被多次调用,您的点击事件将会多次触发。您可以在这里查看此页面jQuery UI ajax tabs - requests multiplying when loading links within tabs

请注意,jQuery 1.4.2有一个错误它是.live(),考虑到这一点。