проблема jQuery с событием изменения и IE8

Существует ошибка в jQuery 1.4.2, который делает событие изменения на избранном элементе запущенным дважды при использовании и DOM-события и события jQuery и этого только на IE7/8. Вот тестовый код:




    

    




    



Обновление: Другое представление проблемы, на самом деле это - настоящая проблема, которую мы имеем с нашим приложением. Привязка живого события изменения на селекторе, который даже не касается избранного элемента с DOM-событием также, вызывает дважды увольнение.




    

    




    



Билет к фактической ошибке: http://dev.jquery.com/ticket/6593

Это доставляет много неприятностей нам в нашей причине приложения, мы используем оба события ASP.NET, смешанные с jQuery и после того как Вы поднимаете трубку событие изменения на любом элементе, каждый (выпадающий) выбор получает эту двойную проблему увольнения.

Есть ли кто-либо, кто знает путь вокруг этого тем временем, пока эта проблема не устраняется?

5
задан Marcus 17 June 2010 в 13:22
поделиться

2 ответа

что-то вроде этого?

jQuery(".myDropDown").removeAttr('onchange').change(function() {

 alert(0);
});
0
ответ дан 15 December 2019 в 00:50
поделиться

Я поигрался с ошибкой, и, похоже, нет очевидного обходного пути. В ходе тестирования я обнаружил, что второе событие изменения запускается 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.

1
ответ дан 15 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: