私は4つの選択リストを持っています。ページの読み込み時に読み込まれる最初のコンテンツ。お互いの内容は、前のリストで選択したアイテムによって異なります。
リスト内のURLアドレスからデータをロードする関数が1つあります。これは、ユーザーが各リストで値を1つずつ選択する場合に正常に機能します。コードからすべての値を設定する必要がある場合があり、それが問題になります。
今、私はこのような機能を持っています:
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は選択リストです
問題は、2番目のリストから項目を選択する必要がある場合、Ajax関数がまだ実行されていないため、まだ空であるということです。
イベントchange()が完了するのを待たなければならない主な質問。これは、コンテンツをフィルタリングする前に、selectにコンテンツをロードします。
$ .Deferred()については知っていますが、このコードに適用する方法がわかりません。