我有 4 个选择列表。页面加载时加载的第一个内容。彼此的内容取决于上一个列表中的所选项目。
我有一个函数,它从列表中的 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 功能还没有完成。
必须等待事件 change() 完成的主要问题,它在我们过滤其中的内容之前加载 select 中的内容
我知道 $.Deferred() 但不知道如何将其应用于此代码。