Существует ошибка в jQuery 1.4.2, который делает событие изменения на избранном элементе запущенным дважды при использовании и DOM-события и события jQuery и этого только на IE7/8. Вот тестовый код:
Обновление: Другое представление проблемы, на самом деле это - настоящая проблема, которую мы имеем с нашим приложением. Привязка живого события изменения на селекторе, который даже не касается избранного элемента с DOM-событием также, вызывает дважды увольнение.
Билет к фактической ошибке: http://dev.jquery.com/ticket/6593
Это доставляет много неприятностей нам в нашей причине приложения, мы используем оба события ASP.NET, смешанные с jQuery и после того как Вы поднимаете трубку событие изменения на любом элементе, каждый (выпадающий) выбор получает эту двойную проблему увольнения.
Есть ли кто-либо, кто знает путь вокруг этого тем временем, пока эта проблема не устраняется?
что-то вроде этого?
jQuery(".myDropDown").removeAttr('onchange').change(function() {
alert(0);
});
Я поигрался с ошибкой, и, похоже, нет очевидного обходного пути. В ходе тестирования я обнаружил, что второе событие изменения запускается jQuery, поэтому мне удалось собрать быстрое решение, которое включает удаление обработчика событий DOM 0 и повторное применение его к таймеру, который запускается сразу после завершения потока:
jQuery(".myDropDown").change(function() {
if ($.browser.msie) {
var dd = $(this)[0],
oc = dd.onchange;
dd.onchange = null;
window.setTimeout(function () {
dd.onchange = oc;
}, 0);
}
});
У меня это отлично работает в IE8, появляется только одно предупреждение "привет", хотя вы можете добавить туда проверку IE. Или нет, но это, вероятно, не будет иметь значения. Эта проверка определенно нужна, и я добавил ее в образец. Вот моя скрипка .
Единственным другим решением было бы удалить обработчик DOM 0 и использовать только обработчик jQuery.