2010-04-01 34 views
2

我正在使用jQuery UI TabsjQuery - 事件不會爲動態創建的選項卡元素觸發

<div id="tabs"> 
<ul id="tablist"> 
    <li><a href="#fragment-1"><span>One</span></a></li> 
</ul> 
</div> 

我有一個添加新選項卡的按鈕。我使用下面的代碼:

var newTabId = $('#tabs').tabs('option', 'selected') + 1;  
$('#tabs').tabs("add",'someUrl.htm','New Tab',newTabId); 

(Tab鍵將被旁邊的當前選擇的選項卡中添加)

現在沒有新添加的標籤觸發任何事件,如點擊或懸停

$('#tablist li').click(function(){ 
    alert('test message'); 
}); 

但事件會爲初始源代碼中的選項卡正確觸發。

如何解決?

回答

7

改爲使用live

$('#tablist li').live('click', function(){ 
    alert('test message'); 
}); 

或者更好的是,delegate事件如預期

$('#tablist').delegate('li', 'click', function(){ 
    alert('test message'); 
}); 
+0

代表+1 – Giorgi 2010-04-01 11:42:07

+0

@Matt,在這種情況下我無法讓代表爲我工作。它不適用於tablist上的li。但如果我創建一個在tablist之外的元素的委託,它可以正常工作......!任何想法?? – Amit 2010-04-01 12:41:30

+0

@Amit:您應該將事件委託給執行'delegate'方法時在DOM中註冊的元素。它在#tabs上工作嗎? – Matt 2010-04-01 13:00:18

0

您可能需要將元素綁定到事件創建時,如果它有任何興趣.clone(true)將克隆項目並保持它與事件綁定。

+0

克隆沒有工作..它創建包括樣式的現有標籤的翻版。 – Amit 2010-04-01 13:20:26

+0

好的。值得一試:) – 2010-04-01 13:54:15

相關問題