ドロップダウンを選択しました。オプションのコンテンツを変更し、選択したトリガーを呼び出しました:更新しましたが、ドロップダウンを再構築しません。これは私の更新です
<select name="shortcode" style="width: 150px; display: none;" class="chosen_select chzn-done" id="select_shortcode"> <option value=""></option> <option value="7183">7183</option> <option value="7983">7983</option> </select>
そして、これは選択されたドロップダウンです(最後の2つを再構築して削除する必要があります<li>
)
<ul class="chzn-results">
<li id="select_shortcode_chzn_o_1" class="active-result" style="">7183</li>
<li id="select_shortcode_chzn_o_2" class="active-result" style="">7983</li>
<li id="select_shortcode_chzn_o_3" class="active-result" style="">8208</li>
<li id="select_shortcode_chzn_o_4" class="active-result" style="">8308</li>
</ul>
これは私のjQueryコードです:
$('#select_shortcode_mask').change(function(){
var shortcode_mask = $('#select_shortcode_mask').val();
$('#select_shortcode').empty();
var shortcode = {"7X83":["7183","7983"],"8x08":["8208","8308"]};
$('#select_shortcode').append("<option value=''></option>");
if(jQuery.isArray(shortcode[shortcode_mask])){
$.each( shortcode[shortcode_mask], function( subkey, subvalue ) {
$('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
})
} else {
var full_shortcode = ["7183","7983","8208","8308"];
if(jQuery.isArray(full_shortcode)){
$.each(full_shortcode, function( subkey, subvalue ) {
$('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
})
}
}
$("#select_shortcode").trigger("chosen:updated");
});
解決しよう:私は古いバージョンを使用しているので、
$("#select_shortcode").trigger("liszt:updated");
だからダンプ^^
選択したプラグインを頻繁に使用していますが、この問題に何度も遭遇します。
通常は.trigger("chosen:updated")
を使用して解決できます。しかし、ほんの1分前に、このメソッドは機能しなくなりました。混乱しているので、2つのjsファイルで同じ関数を使用します。たとえば、a.js
とb.js
は、a.js
では機能しますが、b.js
では機能しません。なんでかわからない…もう迷っちゃう!
それで、私は再びapiをチェックします。私は.chosen("destroy")
を見つけて、刺激を受けました!
そして私はそれが究極のソリューションだと思います:それを破壊して再構築します。
$('.chosen').chosen("destroy").chosen();
うるさいですか? :p
変更関数は、要素「#select_shortcode_mask」の変更を呼び出します。選択リストのID: "#select_shortcode"
私のやり方はこれです...
$timeout(function() {
$('#CampSrchId').trigger('chosen:updated');
}, 1000);
OR
window.setInterval(function() {
$('#CampSrchId').trigger('chosen:updated');
}, 1000);
コード:
$('#test')
.val(1)
.trigger('liszt:update')
.removeClass('chzn-done');
$('#test_chzn').remove();
$("#test").chosen({
width: "220px",
no_results_text: "test"
});
使った
_$("select").chosen({ width: "100%" });//chosen hack
_
.trigger("chosen:updated");
を使用する場合と同様に、これは問題を解決するようには見えませんでした。見た目はハックですが、うまく機能します。