У меня есть страница с флажком, который установлен на отметку при загрузке страницы. Если / когда флажок снят, мне нужно запустить функцию. Следующий код отлично работает во всех браузерах, за исключением IE. В версиях 7 и 8 (даже не тестировал 6) он работает, но вы должны снять его, поставить галочку, а при втором снятии отметки он выполняет функцию. В документации jQuery сказано: «Начиная с jQuery 1.4 событие изменения теперь всплывает и работает идентично всем другим браузерам в Internet Explorer» ... но похоже, что это не работает. Есть идеи?

Код:

$('#checkbox').change(function() {
  // do something
});
1
mike 30 Июн 2010 в 06:11

2 ответа

Лучший ответ

Чтобы решить эту проблему, выполните обновление до jQuery 1.4.2 +. В 1.4.2 включена несколько изменений / исправлений для событий.

Это событие change, всплытие change в IE (большое событие для многих) и многое другое было исправлено в этом выпуске, обновление решит вашу проблему :)

1
Nick Craver 30 Июн 2010 в 14:08

Если вы хотите остановить всплытие событий, используйте

$('#checkbox').change(function(event) { 
    event.stopPropagation();
    // do something 
});

Возможно, вы также могли бы сделать что-нибудь вроде

if ($.browser.msie) {
    $('#checkbox').click(function() { // assuming this will be fired for keyboard as well

        $(this).change();
    });

};

Это может вызвать событие.

1
alex 30 Июн 2010 в 02:13