Изменить события на динамически добавленных выборках с помощью плагина Chosen

Я использую плагин Chosen на своем сайте, и до сих пор он работал отлично. Тем не менее, я нахожусь в ситуации, когда я добавил выбор динамически и активировал плагин Chosen на этих выборках. Эти выбранные селекторы производятся нормально, но я не могу понять, как связать событие нажатия с элементом. Выбрал предлагает это ($("#form_field").chosen().change( … );) как способ сделать что-то для события change, однако это не работает, так как мой выбор был добавлен динамически.

я пытался $('#el').change а также $(document).on("change", "#el", function()) а также без какого-либо успеха.

2 ответа

Решение

Оригинальный ответ: от http://harvesthq.github.io/chosen/

"Если вам нужно обновить параметры в выбранном вами поле и вы хотите, чтобы Chosen принял изменения, вам нужно вызвать событие" selected: updated "на поле. Chosen восстановит себя на основе обновленного содержимого. "

$("#form_field").trigger("chosen:updated");

... так что просто позвоните после добавления нового элемента.

Изменить: После просмотра этого http://jsfiddle.net/amindunited/reh5p0tg/3/ я вижу, что проблема заключалась в том, что прослушиватель change() для второго выбора был присоединен до того, как этот выбор был добавлен на страницу. Я обновил код скрипки для работы:

http://jsfiddle.net/amindunited/reh5p0tg/4/

РЕДАКТИРОВАТЬ

Еще один способ заставить это работать - поместить все в функцию init:

function init_new_content(){
  $("#form_field").chosen();
}
init_new_content();

И затем вызывайте его всякий раз, когда вы знаете, что внесли изменения (например, в ajax)

$.ajax({...},
            success: function( data){
                     init_new_content();
            },
...
Другие вопросы по тегам