我有以下脚本,只要是静态html
就可以使用$('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事件外观?
如果是,我该怎么做?
答案 0 :(得分:1)
是的,您需要使用 live
$('li.tab').each(function(index) {
$("#tab" + index).live('click', function() {
// ...
});
});
答案 1 :(得分:1)
$('.your_target_class').live('click', function () {
//your code here.
});
答案 2 :(得分:1)
使用.delegate()代替.live(),它绑定到围绕您所定位的对象。你可以链接.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()中有一个错误,考虑到这一点。