2
我在我的頁面上使用jQuery Chosen,我希望每次選擇新選項時都運行一個函數。該功能隱藏所有子div
s在父div
,然後只顯示與選定的選項相對應的一個。jQuery選擇:更改事件不會從AJAX調用觸發
HTML:
<select id="settings-select" data-placeholder="Choose…" class="chzn-select">
<option value="setting1">Option 1</option>
<option value="setting2">Option 2</option>
<option value="setting3">Option 3</option>
<option value="setting4">Option 4</option>
<option value="setting5">Option 5</option>
<option value="setting6">Option 6</option>
</select>
<div id="settings-tabs">
<div id="setting1" class="tab">...</div>
<div id="setting2" class="tab">...</div>
<div id="setting3" class="tab">...</div>
<div id="setting4" class="tab">...</div>
<div id="setting5" class="tab">...</div>
<div id="setting6" class="tab">...</div>
</div>
JS:
var settingsShow = function(){
var showPanel = $("#settings-select").find('option:selected').val();
$("#settings-tabs .tab").hide();
$("#" + showPanel).fadeIn("fast");
alert(showPanel);
}
$(document).ready(function(){
$("#settings-tabs .tab").hide();
$("#settings-select").chosen().change(settingsShow);
});
所有這一切工作正常,到目前爲止 - 當選擇的項目更改,settingsShow
被稱爲(並顯示警告只是爲了確認這一點) 。現在
,我也有一個AJAX調用,當它完成,改變所選的選項:
$("#settings-select").val("setting1").trigger("liszt:updated");
settingsShow();
這裏的問題:一旦選定的選項由完成AJAX調用改變,選擇先前選擇的選項不再觸發更改事件。例如:
- 選擇 「選項2」:顯示警報 「選項2」
- 執行AJAX調用:完成後,選擇 「選項1」,並顯示警報 「選項1」
- 選擇 「選項2」:什麼也沒有發生
我知道它是與選擇了一個問題,特別是因爲它,如果我用一個正常的select
而不是正常工作(在上述步驟3,我去拿,上面寫着「選項2」一樣,我應該警告)。但正如你所看到的,我使用.trigger("liszt:updated")
來更新select
當AJAX調用更改選定的選項,所以我不明白爲什麼這不起作用。