1

.on()関数がajaxのロード時に1回/2回だけイベントを発生させるのは奇妙だと思います。

サンプルコードは次のとおりです。

$(document).on('click', '.cbxCheckAll', function(e) {
alert(this.checked);
$(this).parents('table').find('input.cbxDelete:checkbox').attr('checked', this.checked);
});

シナリオ: 基本的に、ユーザーのリストを含むドロップダウンがあります。ドロップダウンでユーザーを選択すると、選択したユーザーの情報が ajax を介して div に即座に読み込まれます。次に、そのdivに、「すべて選択」オプションを備えた複数のチェックボックスがあります。

「すべて選択」をクリックすると、すべてのチェックボックスが選択されました。別のクリックで、チェックボックスがオフになりました。まあ、うまくいきました。しかし、もう一度(3回目)クリックすると、もう機能しません。2回目のクリックでしか機能しないようです。

お気づきかもしれませんがalert()、「すべて選択」チェックボックスの値を表示する があります。クリックするたびに発火するようですが(3番目、4番目など)、チェック/チェック解除部分はそうではありません。

最近、Jquery のバージョンを最新 (1.9) に更新しました。機能のあるver(1.7)を使っていましたが、最新で削除されたので.live()変更しました。.on().live()

前もって感謝します!

4

1 に答える 1

0

プロパティ.prop()を扱うときは、最近のバージョンの jQuery で使用する必要があります。checked

$(document).on('click', '.cbxCheckAll', function(e) {
    //alert(this.checked);
    console.log(this.checked);
    $(this).parents('table').find('input.cbxDelete:checkbox').prop('checked', this.checked);
});
于 2013-03-06T15:14:01.533 に答える