Chosen: Выбрано: готов не стрелять

Созданный на 3 апр. 2014  ·  14Комментарии  ·  Источник: harvesthq/chosen

Кажется, я не могу получить Chosen:ready to fire, может ли кто-нибудь подтвердить, правильное это использование или нет?

jQuery('.chzn-select').on(' выбрано:готово ', функция () {
jQuery('li').ScrollText();
});

«.chzn-select» — это класс, выбранный до этого кода.

Спасибо

Самый полезный комментарий

Я также столкнулся с проблемой, когда selected:ready не срабатывал.

Это не сработало:

$('select')
    .chosen()
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    });

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

$('select')
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    })
    .chosen();

Все 14 Комментарий

Я предполагаю, что вы просто слишком поздно привязываете своего слушателя (если вы привязываете его после того, как выбранный готов, он не увидит событие). Попробуйте привязать прослушиватель перед применением выбранного

Ах, это было частью решения. была также строка, отвязывающая все события от выбранного до его настройки, которая удаляла его. Я считаю, что строка развязки была добавлена ​​​​из-за странностей в asp.net и обратных передачах.

Спасибо за быстрый ответ.

Закрыто. :+1:

Извините, еще одна вещь, я должен иметь возможность получить выбранный объект в этой функции, как показано ниже, это правильно?

jQuery('.chzn-select').on(' выбрано:готово ', функция (выбрано) {
jQuery('li').ScrollText();
});

Я хочу получить новый элемент и что-то с ним сделать, когда он будет готов. Содержит ли выбранный объект это? Я вижу, что у объекта есть результат, однако он всегда не определен.

Хорошо, я снова закрываю это.

Я понял, что это никогда не сработает. Поскольку я хочу применить событие к каждому параметру в выбранном раскрывающемся списке, однако проблема в том, что параметры не создаются до тех пор, пока не будет нажат раскрывающийся список. Поэтому я мог бы переместить свой код в событие " selected:showing_dropdown ".

первым аргументом прослушивателя событий всегда является объект события. Параметры являются вторым аргументом: http://harvesthq.github.io/chosen/options.html#triggered -events

ах, я пропустил второй параметр. Спасибо.

Вы должны привязывать свои события, используя делегирование (например, устаревшее $().live() ), потому что тогда элементы не должны присутствовать на странице при привязке:

$('.chosen-select').on('click', 'li', handlerFunction);

Подробнее о делегировании событий здесь: https://learn.jquery.com/events/event-delegation/

Я также столкнулся с проблемой, когда selected:ready не срабатывал.

Это не сработало:

$('select')
    .chosen()
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    });

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

$('select')
    .on('chosen:ready', function(){
        console.log('chosen:ready')
    })
    .chosen();

событие срабатывает. Но в первом случае ваш слушатель, вероятно, был зарегистрирован после его срабатывания.

@stof Хорошее разъяснение, спасибо.

Просто интересно, а почему элементы списка создаются в событии "showing_dropdown", а не в событии "готово"?

Элементы списка не создаются в chosen:showing_dropdown .

chosen:ready запускается, когда результаты построены и Chosen готов получать события, chosen:showing_dropdown запускается после открытия Chosen.

Так что же вас интересует? ;)

Мой список «Выбранные результаты» всегда пуст, пока я не открою раскрывающийся список. Я нашел другой способ делать то, что делал, но мне было просто немного любопытно, как это работает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги