выбран jQuery: событие change не запускается из вызова AJAX


Я использую jQuery , выбранный на моей странице, и я хочу запускать функцию каждый раз, когда выбирается новая опция. Функция скрывает все дочерние 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. выберите "Option 2": выводит предупреждение "option2"
  2. выполнить вызов AJAX: по завершении выбирает "Option 1" и отображает предупреждение "option1"
  3. Выберите "вариант 2": ничего не происходит

Я знаю, что это проблема с избранными в частности, потому что он отлично работает, если я использую обычный select (на Шаге 3 выше я получу предупреждение, которое говорит "option2", как и должно быть). Но, как вы можете видеть, я использую .trigger("liszt:updated") для обновления select, когда вызов AJAX изменяет выбранный параметр, поэтому я не вижу, почему это не работает.

1 2

1 ответ:

Оказывается, это законная ошибка в выбранном 0.9.8 (текущая версия релиза). Я обновил до ультрасовременной версии (официально не выпущенной), и проблема исправилась без каких-либо других изменений.