Привязка к событию изменения в динамически создаваемом раскрывающемся списке с помощью jQuery - PullRequest
1 голос
/ 08 октября 2010

Я создаю несколько выпадающих списков динамически, используя jQuery. Я хотел бы иметь возможность инициировать событие при изменении выбранного элемента раскрывающегося списка. Просматривая здесь и в других местах, я вижу, что невозможно привязать событие события выпадающих списков с помощью live (), поэтому мне интересно, каковы альтернативы? Я знаю, что можно привязать к событию click, но, поскольку это происходит до того, как выбор выпадающего списка может измениться, для меня бесполезно отслеживать, изменился ли выбранный элемент.

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

$(document).ready(function() {
    // Stuff omitted.
    addEventHandlers();
}

function addEventHandlers() {
    // Stuff omitted.
    $('#divReview select').live("click", function(){
        alert('This is where I would like the change event to occur instead.');
    });
}

Ответы [ 2 ]

5 голосов
/ 08 октября 2010

Используйте событие change вместо click, например:

$('#divReview select').live("change", function(){

В IE была ошибка, в частности перед версия jQuery 1.4.2 .До этого change не корректно вспыхивал в IE (на что опирается .live()), это было исправлено в 1.4.2, поэтому, если используется эта версия или выше, это должно работать.*

3 голосов
/ 12 октября 2010

После небольшого поиска я наткнулся на этот вопрос, который, похоже, похож на проблему. Я изменил свой метод jQuery на это, и он работает, как и ожидалось, в IE8:

$('body').delegate('#divReview select', 'change', function() {
    alert('Change event triggered.');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...