2013-05-10 73 views
0

希望這是有道理的...jQuery追加不識別元素在jQUery加載部分視圖

我有一個頁面,加載一個對話框。對話框的外殼實際位於主頁面的HTML中(display:none)。在對話框中,我通過以下調用加載了部分視圖。

$('.partial').load(url, function (html) { $('.partial')[0].value = html; }); 

該局部視圖有兩個選擇框。當第一個改變時,第二個應該通過.getJason調用填充。這個電話在下面。

$.getJSON(url, function (result) { 
    var dropList = $("#select"); 
    var options = ""; 
    $.each(result, function() { 
     options += '<option value="' + this.ID + '">' + this.Name+'</option>'; 
    }); 

    $("#select2").empty().append(options); // doesn't work located on the partial view 
    $("#test2").empty().append(options); // works located on main page 
}); 

的.getJason呼叫經由帶有onChange一個函數調用=「populateSecondSelect()」,因爲在網頁最初加載後的局部視圖被加載(在。對將不會在這種情況下工作)。

問題是我試圖加載選項到第二個選擇的部分。 jQuery .append不能識別該元素。我知道調用正在工作,因爲當我嘗試在主頁面上的「Test2」中加載值時,它的工作原理。

如何讓jQuery將元素識別爲加載的部分視圖上的.append?

回答

0

好的,我想出了一個解決方法。我的想法是,我需要填充第二個選擇框,因爲我需要將它與docuemnt.on調用綁定,我在實際的select語句中使用了mousedown。

$(document).on("mousedown", "#select2", function(){ 
    if(options != "") { // that options is "global" 
     $(this).empty().append(options); 
     options = ""; 
    }  
}); 

這完全填充它。太好了,耶!現在,問題是當第一個選擇被改變時,第二個選擇選項將顯示。我想這將不得不做。 :(

1

你是對的,通常on方法不會工作,如果內容稍後加載。但是,on方法可以直接附加到document對象,該對象允許將事件附加到選擇器,即使它們尚未添加到DOM中。

$(document).on("change", "#select", populateSecondSelect); 

儘管需要使用此方法將事件綁定到動態加載的元素,但只需選擇元素並附加html即可按預期工作。我懷疑代碼中的其他地方可能存在問題。嘗試發佈一個更完整的代碼示例JSFiddle

+0

我改變了代碼,使用$(document).on並得到它的工作,謝謝,但事實仍然是,填充第二個選擇的append不起作用。修改函數來附加一個.on或類似的東西? – ZombieCode 2013-05-11 05:18:20