我有這個問題,我在這個選擇組上做了一個.each(),對於每一個它觸發一個調用服務器的一些數據來填充它。然而,我不明白爲什麼它只會填充最底層。然後我扔了一些警報(),並意識到它只是多次運行最後一個回調函數。我意識到,到第一次JSON調用完成時,$(this)是不同的......我怎麼才能讓它等待,所有這些都會被正確的調用填充?
這裏是SCRIPT部分:
var thisbundle;
var testcount = 0;
//get bundle options first..
$("select.bundle").each(function(){
thisbundle = $(this);
testcount++;
var url = "/order/getpricing/" + thisbundle.attr("id");
//clear it out...
//thisbundle.children().remove();
var passbundle = thisbundle;
$.getJSON(url, function(data, passbundle){
var options = '';
for(n = 0; n < data.length; n++){
options += '<option value="' + data[n].volumeID + '">' + explainPricing(data, n) + '</option>';
}
passbundle.html(options);
});
});
這裏是組成部分:
<div id="bundles">
<table>
<%foreach (KODmvc.Models.Product prod in Model.products)
{%>
<%if (prod.NumberOfCourses > 1)
{ %>
<tr><td><img src="<%=prod.Icon %>" /></td><td><b><%=prod.Title%></b><br /><%=prod.Description%></td><td><select class="bundle" id="<%=prod.ProductID %>"><option value="-1">None</option>"</select></td></tr>
<%} %>
<%} %>
</table>
</div>
您需要顯示一些代碼才能回答。但是,一般情況下,通過捕獲本地變量中想要的值來解決這類問題。 –
現在看代碼:) – BigOmega