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调用更改选定的选项,所以我不明白为什么这不起作用。