我有两个事件:
$(document).on('change','#trackAll',function() {
$('#tblTrackPlanFood')
.find("input[type='checkbox']")
.prop('checked', this.checked);
});
$(document).on('click','#trackAllLbl',function() {
$('#tblTrackPlanFood')
.find("input[type='checkbox']")
.prop('checked', this.checked);
});
第一个"更改"事件是一个复选框 (#trackAll)。它在IE8中工作正常。"#tblTrackPlanFood"表中的复选框按预期选中/取消选中。
但是,第二个事件"点击"#trackAllLbl"位于标签上。在IE8中它不起作用。我可以插入一个 alert() 并确认选择器工作正常,但是单击标签时相同的"#tblTrackPlanFood"复选框代码不起作用。
知道为什么会发生这种情况吗?
问题是 .prop('checked', this.checked);
这是指标签,而不是复选框。 请改为执行以下操作:
$(document).on('click','#trackAllLbl',function() {
$('#tblTrackPlanFood')
.find("input[type='checkbox']")
.prop('checked', $("#trackAll").is(":checked"));
});
代码中的问题是,在第二个函数中,this
不是复选框,而是标签。
你需要这样的东西:
.prop('checked', document.getElementById('trackAll').checked);