2011-03-16 79 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(),考慮到這一點。