2011-10-05 37 views
1

我有一個jQuery在.load()函數後丟失的問題。 我有一個用jQuery UI構建的元素。問題是,當我從單獨的頁面加載它是這樣的:jquery ui在jQuery加載後丟失

$("#mydiv").load("getgroup.php?group=" + selectedGroup).html(); 

的getgroup.php產生這樣的事情,這取決於GET參數:

<select> 
<option>something</option> 
<option>something</option> 
</select> 

當負載加載它() (或交的,阿賈克斯,拿到)的元素返回未格式化......我曾嘗試包括jQuery和jQuery的UI插件也在getgroup.php文件,但沒有運氣...

謝謝

回答

0

問題是,你的jQuery代碼不會自動執行動態加載的元素。

你應該做的是把所有的jQuery UI代碼放入一個函數中。舉例來說,假設你想呼籲新加載的提交元素button() jQuery UI的功能:

function launchUiWidgets(target) { 
    $(target).find('input:submit').button(); 
} 

然後,您可以使用該功能作爲成功回調當您加載新的元素 - 給它target作爲參數以避免重新運行您的所有DOM上的代碼。讓我們假設您加載ID的div的「容器」的數據:

$.get(
    "whatever.html?name=val", 
    function(data){ 
     $('#container').html(data); 
     launchUiWidgets('#container'); 
    }, 
    "html"); 
+0

謝謝,這個例子幫助我解決了這個問題 – user980145

0

如果我的理解是正確的,並且正在插入元素,但沒有CSS,則可能需要在元素加載後運行.addClass,以在元素存在時應用所選的CSS類。但是,如果在您的CSS中預設了元素類型的默認值,例如select{color:#000000;width:...這些也應該自動加載。

每註釋如下─如果你正在尋找你的預定義的處理程序仍然相關)通過AJAX注入的內容/負載(調用,您可以使用.live()方法:

http://api.jquery.com/live/

+0

我認爲這個問題更多的是與jQueryUI的功能沒有被應用在動態加載的標記。 – cbrandolino

+0

在這種情況下,提問者可以使用live()方法:http://api.jquery.com/live/ – SW4

+0

不是真的,因爲它不會關於聽衆。看看下面的答案。 – cbrandolino