$(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中不起作用。
答案 0 :(得分:1)
IE8(也是旧版本)在变更事件上非常错误:
当复选框或收音机模糊时,IE 5-8会触发事件,而不是 当它被激活。这是一个需要用户的严重错误 采取另一个行动,阻止一致的跨浏览器界面 基于复选框和无线电上的更改事件。
参考: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();
});