2012-09-18 133 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(未正式发布),并且该问题自行更正,没有其他更改。