0

index.php内に次のjavascriptコードがあります。

$(function () {
     $('.checkall').click(function () {
          $(this).find(':checkbox').attr('checked', this.checked);
     });
});

ajaxを介して情報を取得し、jQuery Data Tablesを使用してその情報からテーブルを作成します。データテーブル内headには、チェックボックスがありますclass='checkall'

頭の中にあるチェックボックスが、ajaxを介して取得された他のすべてのチェックボックスをチェックしないのはなぜですか?

*Firebug内でエラーが発生しません

* jqueryデータテーブルのすべてのチェックボックスをチェックする方法をチェックしましたか?しかし、それでもそれを取得しないでください... :(

4

3 に答える 3

1
$(function () {
     $('.checkall').click(function () {
          $(':checkbox').not(this).attr('checked', this.checked);
     });
});

頭のチェックボックスとチェックしたいチェックボックス以外にページに他のチェックボックスがない場合に機能します

于 2012-04-15T15:10:20.583 に答える
1

あなたの問題は、おそらく「checkall」チェックボックスを参照する $(this) の使用にあると思います。

find() はノードの子孫を見つけますが、チェックしたいチェックボックスはそのチェックボックスの子孫ではありません。

あなたが引用した例は、 datatable.fnGetNodes() を参照することによって、それを行う正しい方法を示しています

于 2012-04-15T15:02:56.643 に答える
0

GreyBeardedGeek が言ったことに加えて、ajax 経由でロードしている場合、checkall チェックボックスが ajax 呼び出しによって作成され、DOM に挿入されている場合、クリック イベントは発生しません。この場合、「on」(または jQuery のバージョンによっては「live」) を使用する必要があります: http://api.jquery.com/live/。例:

$(document).on("click", ".checkall", 
  function(){ $(this).find(':checkbox').attr('checked', this.checked); });
于 2012-04-15T15:16:50.890 に答える