2011-08-02 57 views
1

我想將手風琴添加到動態添加標籤。此選項卡由服務器的回發數據生成。我應該怎麼做?jquery ui手風琴無法在動態添加標籤上工作

的回傳的數據是一樣的東西

<div id ="newtab"> 
<div id = "accordion"> ...</div> 
... 
</div> 

$("#accordion1).accordion(); 

添加標籤之前,但它不工作。

回答

2

好像你已經在問題發現的問題:該選項卡添加

$("#accordion1).accordion();

之前,但它不工作。

將新元素添加到DOM後(即在AJAX調用的success函數中),您需要再次初始化手風琴。

您的jQuery選擇器$("#accordion")僅選擇當前在文檔中的元素。你可以使用像.livequery這樣的插件在新元素上自動調用你想要的函數。


如果你不反對使用上述的liveQuery插件,這裏有一個例子:

$("#accordion").livequery(function() { 
    $(this).accordion(); 
}); 

這將使任何元素添加到DOM與id#accordion成手風琴。

例子:http://jsfiddle.net/andrewwhitaker/HBFnJ/

+0

所以我擔心的是,反正是有做現場直播手風琴? – Seen

+0

@Seen:使用插件,當然有!如果這是您想要的路線,我會添加一個示例。 –

+0

@Seen:請參閱我的更新回答。 –

4

我正在尋找一個解決類似的問題,當我遇到這個帖子來了。但是在這裏你將不得不導入一個插件。
我試過另一個選項,它對我很有幫助。

當添加動態數據時,調用手風琴的銷燬方法。像這樣:

.accordion("destroy"); 

,並使用相同的選項重新初始化手風琴,你施加於DIV較早:)

+0

謝謝!這似乎比我找到的任何解決方案都更好。儘管如此,它仍然在第二個.accordion()實例上感覺有點小錯誤。此外,任何方式來檢查一個元素是否已被手風琴之前? (我只是把「destroy」命令放在try/catch之前.accordion() – Buchannon