2011-08-02 24 views
1

AJAXリクエストの一部として返されたチェックボックスをすべてチェックするにはどうすればよいですか?Ajax /動的チェックボックスへのアクセス

私は電子メールメッセージのサマリーを表示するページを持っています(gmail/yahoo/etc ...と思う)。各要約には、それに関連付けられたチェックボックスがあり、ユーザーはメッセージで任意の数のことを実行できます。リストの上部と下部には「すべてをチェック」オプションがあります。デリゲート関数を動的チェックボックスにバインドする方法はわかっていますが、「Check All」ボタンにこれらの動的要素を操作する方法はありません。例:

//get the list of messages 
$.ajax({ 
    type: "POST", 
    url: "GetMessages.asmx/GetMessagePreview", 
    data: "{'FolderID': '5'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
     //code here to create a checkbox row (checkbox, message title, etc...) 
     var cbRow = '<input type="checkbox" class="msg_check" ...etc... />' 
     //code here to insert to a div or other container 
} 
}); 

$("#selectAllButton").click(function(){ 
    ????? This is the blank I need filled in... 
}); 

ご協力いただければ幸いです。ありがとうございました。

答えて

0

それは簡単なはず:

$("#selectAllButton").click(function(){ 
    if (this.checked) 
     $('.msg_check').attr('checked', 'checked'); 
    else 
     $('.msg_check').removeAttr('checked'); 
}); 

編集:あなたは同じ条件でアイテムを挿入したい場合は、次に何を他のすべての項目(すべてにチェック/チェックを外す)、よう:

// ... 
var checked = $("#selectAllButton").is(':checked'); 
var cbRow = $('<input type="checkbox" class="msg_check" />'); 
cbRow.appendTo(list); 
var checkbox = cbRow.find('.msg_check'); 

if (checked) 
    checkbox.attr('checked', 'checked'); 
else 
    checkbox.removeAttr('checked'); 
// ... 
+0

。 – jobo54321

+0

しかし、最初にDOMに挿入してみませんか? – Rost

+0

HTMLを作成してコンテナに追加するときにappend()を実行しています。 – jobo54321

0

へのajax呼び出しを伴う要素をの現在の状態である#selectAllのチェックボックスを継承するようにしようとするならば、それを読んで、新しい要素を作成するときにそれを適用する必要があります。

これは、私がアクセスしようとしている要素がDOMではないので、したがって、私は普通の要素のようにそれらを扱うことができない動作しませんので

$.ajax({ 
    type: "POST", 
    url: "GetMessages.asmx/GetMessagePreview", 
    data: "{'FolderID': '5'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 

     var currentState = $("#selectAllButton").is(':checked') ? 'checked' : ''; 

     //code here to create a checkbox row (checkbox, message title, etc...) 
     var cbRow = '<input type="checkbox" class="msg_check" '+ currentState +' />'; 
     //code here to insert to a div or other container 
} 
}); 

$("#selectAllButton").click(function(){ 
    // the way you normally select your elements.. 
    $('.msg_check').... 
}); 
+0

私は正確な理由はわかりませんが、クリックイベントハンドラの配置には問題があります。私はascx(ASP.NETコントロール)を使用して私のページを構築しています。私は選択を行うロジックを持っていた/メッセージリストのコンテナを含むコントロールのすべての選択を解除...メインASPXページのヘッダータグに移動すると、すべてがうまくい... あなたのコメントと応答。私はあなたのような人々のためにこのサイトを愛しています。 :) – jobo54321

+0

@jobo :)あなたがそれを整理してうれしい:) –