我有4個選擇列表。頁面加載時第一次加載的內容。彼此的內容取決於上一個列表中的選定項目。ajax列表填充
我有一個函數,它從列表中的url地址加載數據。當用戶在每個列表中選擇一個值時,此功能正常工作。 有時需要設置代碼中的所有值,這是一個問題。現在
,我有這樣的功能:
var c = $('#container');
var f1 = c.find('.myval1').val();
var f2 = c.find('.myval2').val();
var f3 = c.find('.myval3').val();
var f4 = c.find('.myval4').val();
if(f1.length > 0){
c.find('.form').find('.s1').children('option').filter(function() {
return $(this).text().toLowerCase() == f1.toLowerCase();
}).attr('selected', 'selected');
parent.find('.search-form').find('.s1').change();
}
if(f2.length > 0){
c.find('.form').find('.s2').children('option').filter(function() {
return $(this).text().toLowerCase() == f2.toLowerCase();
}).attr('selected', 'selected');
parent.find('.form').find('.s2').change();
}
if(f3.length > 0){
c.find('.form').find('.s3').children('option').filter(function() {
return $(this).text().toLowerCase() == f3.toLowerCase();
}).attr('selected', 'selected');
parent.find('.form').find('.s3').change();
}
if(f4.length > 0){
c.find('.form').find('.s4').children('option').filter(function() {
return $(this).text().toLowerCase() == f4.toLowerCase();
}).attr('selected', 'selected');
parent.find('.form').find('.s4').change();
}
S1,S2,S3,S4是選擇列表
的問題是,當我們需要從第二個列表中選擇一個項目,它仍然是空的,因爲Ajax功能還沒有完成。
的主要問題必須等待事件的變化()來完成,它加載之前,我們篩選的內容在裏面
我知道$ .Deferred(),但不知道如何選擇的內容將其應用於此代碼。
如何在ajax啓動之前禁用'select'?比你可以啓用時,Ajax完成。 – ocanal
它將如何解決問題?這裏有必要在每個filter()等待事件change()之前更新選擇的內容。 – Vsevolod