• 締切済み

AJAXで生成したHTMLでのチェックボックス一括チェックの方法を教えてください

現在jqueryを使って、ajaxでチェックボックスを生成して、それに対して一括チェックボタンを付けたいと考えております。 <input name="allcheck" type="checkbox" id="checkall" checked="checked" />全て<br /> <input type="checkbox" name="carrier" value="docomo" checked="checked" />docomo<br /> <input type="checkbox" name="carrier" value="au" checked="checked" />au<br /> <input type="checkbox" name="carrier" value="softbank" checked="checked" />softbank<br /> というチェックボックスがajaxで生成されて function carrier_check() { $('#checkall').click(function(e){ $(':checkbox[type=checkbox][name=carrier]').attr('checked', $('#checkall').attr('checked')); }); } のjavascriptで上記のチェックボックスを一括チェックできるようにしようとしているのですが ajaxを使わずに上記のチェックボックスをHTMLに書いているときは一括チェックできるのですが、ajaxを使用して生成した場合にはチェックボックスの一括チェックができません。 どのようにすれば、ajaxで生成されたチェックボックスを一括チェックできるようになるのでしょうか? ご存知の方がいらっしゃいましたらご教授お願いいたします。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

<ajaxを使わずに上記のチェックボックスをHTMLに書いているときは一括チェックできるのですが、 ajaxを使用して生成した場合にはチェックボックスの一括チェックができません。> と言う事は、きっとcheckboxを生成する前にcarrier_check()を実行している からですよ。carrier_check()の内容はまちがってないみたいだから、 ajax実行後にcarrier_check()を実行すればよい。 前後がわからないので、document readyで"id="hoge"のDIVにチェックボッ クスを生成した時のサンプルですけど、 <body> <div id="hoge"> <div> <script type="text/javascript"> <!-- $(function(){ var val='<input name="allcheck" type="checkbox" id="checkall" checked="checked" />全て<br />'; val +='<input type="checkbox" name="carrier" value="docomo" checked="checked" />docomo<br />'; val +='<input type="checkbox" name="carrier" value="au" checked="checked" />au<br />'; val +='<input type="checkbox" name="carrier" value="softbank" checked="checked" />softbank<br />'; $("#hoge").html(val); carrier_check(); }); function carrier_check() { $('#checkall').click(function(e){ $(':checkbox[type=checkbox][name=carrier]').attr('checked', $('#checkall').attr('checked')); }); } // --> </script> </body>

silverfall
質問者

お礼

うぉぉぉ、動きました。 ありがとうございます。助かりました!!

回答No.1

//@cc_on document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/  'click', function ( evt ) {   var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;      if( 'checkall' === e.id ) {    var o, c = 0, chbxs = document.getElementsByName( 'carrier' );    while( o = chbxs[ c++ ] )     o.checked = e.checked;   }  }, false );

silverfall
質問者

お礼

動きましたーーーー。ありがとうございます。

関連するQ&A