2012-09-18 182 views
2

我在我的頁面上使用jQuery Chosen,我希望每次選擇新選項時都運行一個函數。該功能隱藏所有子div s在父div,然後只顯示與選定的選項相對應的一個。jQuery選擇:更改事件不會從AJAX調用觸發

HTML:

<select id="settings-select" data-placeholder="Choose&hellip;" 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調用改變,選擇先前選擇的選項不再觸發更改事件。例如:

  1. 選擇 「選項2」:顯示警報 「選項2」
  2. 執行AJAX調用:完成後,選擇 「選項1」,並顯示警報 「選項1」
  3. 選擇 「選項2」:什麼也沒有發生

我知道它是與選擇了一個問題,特別是因爲它,如果我用一個正常的select而不是正常工作(在上述步驟3,我去拿,上面寫着「選項2」一樣,我應該警告)。但正如你所看到的,我使用.trigger("liszt:updated")來更新select當AJAX調用更改選定的選項,所以我不明白爲什麼這不起作用。

回答

1

事實證明,這是在選擇0.9.8(當前發行版)中的一個合法錯誤。我更新到cutting-edge version(未正式發佈),並且該問題自行更正,沒有其他更改。