2013-11-23 4 views
1
$(function() { 
    var inputChecked = "skills__label_checked", 
     radioChecked = "education__label_checked", 
     elemsInput = $(".skills__input_checkbox, .education__input_radio"); 

    function setLabelClass() { 
    elemsInput.each(function(i, e) { 
     $(e).parent('label')[e.checked?'addClass':'removeClass'] 
     ($(e).is(':radio')?radioChecked:inputChecked); 
    }); 
    } 

    elemsInput.on('change', setLabelClass); 
    setLabelClass(); 
}); 

Это прекрасно работает во всех современных браузерах, включая IE9 +, но не работает в IE8..on метод в jQuery IE8 ошибка

+5

Какую версию JQuery являются вы используете? В ветке 2.x была отмечена поддержка IE8. –

+0

@ FrédéricHamidi, jQuery v1.10.2 – user3024944

+1

Что не работает? Я считаю, что в какой-то момент произошла ошибка IE, которая не запускает событие изменения, пока элемент управления не потеряет фокус. Это то, что происходит? – Jason

ответ

1

IE8 (и старше тоже) вполне багги на события изменения:

IE 5-8 запускает событие, когда флажок или радио размыто, а не , когда она включена. Это серьезная ошибка, которая требует от пользователя предпринять другое действие и предотвратит согласованный кросс-браузерный интерфейс на основе события изменения на флажках и радиостанциях.

Ref: http://www.quirksmode.org/dom/events/change.html

Попробуйте изменить обработчик событий change к click или попытаться исправить поведение заставляет событие изменения стрелять (не проверено):

$('.skills__input_checkbox, .education__input_radio').click(function() { 
     // Cause the change() event 
     // to be fired in IE8 et. al. 
     this.blur(); 
     this.focus(); 
    }); 
Смежные вопросы