0

次の 2 つのイベントがあります。

$(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」テーブルのチェックボックスは、期待どおりにチェック/チェック解除されます。

ただし、2 番目のイベント「クリック」「#trackAllLbl」はラベルにあります。IE8 では動作しません。alert() を挿入して、セレクターが正常に機能することを確認できますが、ラベルがクリックされたときに、同じ「#tblTrackPlanFood」チェックボックス コードが機能しません。

なぜこれが起こっているのですか?

4

2 に答える 2

0

問題は .prop('checked', this.checked); です。

これは、チェックボックスではなく、ラベルを参照しています。代わりにこれを行います:

$(document).on('click','#trackAllLbl',function() {
    $('#tblTrackPlanFood')
        .find("input[type='checkbox']")
        .prop('checked', $("#trackAll").is(":checked"));
});
于 2013-09-12T17:45:51.673 に答える
0

コードの問題は、2 番目の関数thisがチェック ボックスではなく、ラベルであることです。

代わりに次のようなものが必要です:

.prop('checked', document.getElementById('trackAll').checked);
于 2013-09-12T17:46:21.793 に答える