【问题标题】:jQuery Chosen: change event doesn't fire from AJAX calljQuery 选择:更改事件不会从 AJAX 调用中触发
【发布时间】:2012-09-18 13:44:39
【问题描述】:

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

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”:没有任何反应

我知道这是 Chosen 的问题,因为如果我使用普通的 select 代替它可以正常工作(在上面的第 3 步,我会收到一条显示“option2”的警报,就像我应该的那样)。但正如您所见,当 AJAX 调用更改所选选项时,我使用 .trigger("liszt:updated") 更新 select,所以我不明白为什么这不起作用。

【问题讨论】:

    标签: jquery onchange html-select jquery-chosen


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多