选择jQuery:change事件不';t从AJAX调用中触发

选择jQuery:change事件不';t从AJAX调用中触发,jquery,onchange,html-select,jquery-chosen,Jquery,Onchange,Html Select,Jquery Chosen,我在页面上使用jQuery,每次选择新选项时都要运行一个函数。该函数隐藏父div中的所有子div,然后仅显示与所选选项相对应的子div HTML: 到目前为止,所有这些都可以正常工作–当所选项目发生更改时,将调用settingsShow(并显示一个警报以确认这一点) 现在,我还有一个AJAX调用,在完成时更改所选选项: $("#settings-select").val("setting1").trigger("liszt:updated"); settingsShow(); 问题是:一旦所选

我在页面上使用jQuery,每次选择新选项时都要运行一个函数。该函数隐藏父
div
中的所有子
div
,然后仅显示与所选选项相对应的子
div

HTML:

到目前为止,所有这些都可以正常工作–当所选项目发生更改时,将调用
settingsShow
(并显示一个警报以确认这一点)

现在,我还有一个AJAX调用,在完成时更改所选选项:

$("#settings-select").val("setting1").trigger("liszt:updated");
settingsShow();
问题是:一旦所选选项被完成的AJAX调用更改,选择先前选择的选项将不再触发更改事件。例如:

  • 选择“选项2”:显示警报“选项2”
  • 执行AJAX调用:完成后,选择“选项1”并显示警报“选项1”
  • 选择“选项2”:不发生任何事情

  • 我知道这是Selected的一个问题,因为如果我使用普通的
    select
    ,它可以正常工作(在上面的步骤3中,我会收到一个提示,上面写着“option2”,就像我应该看到的那样)。但正如您所看到的,当AJAX调用更改所选选项时,我正在使用
    .trigger(“liszt:updated”)
    更新
    select
    ,所以我不明白为什么这样做不起作用。

    事实证明,这是selected 0.9.8(当前版本)中的一个合法错误。我更新到(未正式发布),问题自行更正,没有其他更改

    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);
    });
    
    $("#settings-select").val("setting1").trigger("liszt:updated");
    settingsShow();