2011-03-25 107 views
1

使用.ajax()函數動態創建div時。我無法將.tabs()小部件附加到新創建的。將ui-widget附加到動態元素

此鏈接創建新的div和 「somefile.php」

<a href="newdiv">Creates New Div</a> 

這裏是動態創建的div拉#tabs格:

<div id="newdiv"> 
     <div id="tabs"> 
      <ul> 
       <li>Example One</li> 
       <li>Example Two</li> 
      </ul> 
     </div> 
</div> 

這裏是我的腳本使用。輸出 - 錯誤:(d ||「」).split不是一個函數 複製代碼

$("#tabs").live(function(){ 
    $(this).tabs() 
}); 

我能夠添加事件參數時顯示的分頁,但是我想的標籤顯示無事件。 複製代碼

$("#tabs").live("click", function(){ 
    $(this).tabs() 
}); 

有人請幫助我理解我錯過了什麼。我一直堅持這個爲期3天。

Chris

回答

0

您是否試圖在AJAX回調完成之前分配活動處理程序?
我的懷疑是你需要將你的代碼移動到你的AJAX對象的成功處理程序中,而不是使用live,因爲我不認爲它符合你的想法。
如果您發佈了更多代碼,我們將能夠幫助您解決更多問題。

我爲你想要做什麼的猜測:

$.ajax({ 
    type: "GET", 
    url: "/tabs/", 
    async: true, 
    success: function() { 
    $('#tabs').tabs() 
    } 
}); 
0

RSG是在正確的您正在使用的live函數不正確。 live函數專門用於將事件處理程序附加到元素和調用函數。正如RSG指出的,在你的情況下,最好的辦法是在ajax請求的成功函數中調用tabs小部件。