dポイントプレゼントキャンペーン実施中!

現在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で生成されたチェックボックスを一括チェックできるようになるのでしょうか?

ご存知の方がいらっしゃいましたらご教授お願いいたします。

A 回答 (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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/08 20:15

//@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 );
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/08 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!