jQuery .find() - 标签选择器单击事件与复选框更改事件不一致IE8

时间:2013-09-12 17:38:35

标签: jquery checkbox internet-explorer-8 label

我有这两个事件:

$(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'表中的复选框。

然而,第二个事件'click''#trackAllLbl'在标签上。在IE8中它不起作用。我可以插入一个alert()并确认选择器工作正常,但是当单击标签时,相同的'#tblTrackPlanFood'复选框代码不起作用。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

问题是.prop('checked',this.checked);

这是指标签,而不是复选框。这样做:

$(document).on('click','#trackAllLbl',function() {
    $('#tblTrackPlanFood')
        .find("input[type='checkbox']")
        .prop('checked', $("#trackAll").is(":checked"));
});

答案 1 :(得分:0)

代码中的问题是,在第二个函数中,this不是复选框,而是标签。

你需要这样的东西:

.prop('checked', document.getElementById('trackAll').checked);