2

私はjqueryコードを使用してすべてのチェックボックスをチェックしていますが、私はそれが好きです:

var JQ7=jQuery.noConflict();
JQ7(document).ready(function(){
JQ7("#chkAll").click(function(){
    JQ7(".chk").prop("checked",JQ7("#chkAll").prop("checked"))
}) 
});
...
<input type="checkbox" id="chkAll" />   
...
<input type="checkbox" class="chk" />

すべてのコードを ajax ページに入れました。最初のロードでは問題なく動作しますが、更新後は動作しません。ajax コードは次のとおりです。

 function showUser(str,pageno,type,sub)
 {
     if (str=="" || pageno=="" || type=="" || sub== "")
 {
     document.getElementById("txtHint").innerHTML="";
     return;
 }
 if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp=new XMLHttpRequest();
 }
 else
 {// code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
 {
     if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
         document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
     }
 }

 xmlhttp.open("GET","<?php echo $view['router']->generate('listing') ?>?page="+pageno+"&genre="+str+"&cat="+type+"&subcat="+sub,true);
 xmlhttp.send();
 }
4

2 に答える 2

5

嘘ライアンの答えに便乗:

現在コード化されているため、クリック ハンドラーは DOM に既に存在する要素にのみ適用されます。DOM の読み込み後にこれらの要素を動的に生成すると、クリック ハンドラーはそれらを認識しません。

jQuery を使用してイベントon()委任できます。これにより、ハンドラーが (要素ではなく) ドキュメントに配置され、DOM の読み込み後にページに追加される要素を選択できるようになります。

JQ7(document).on('click','#chkAll',function(){
  var is_checked=this.checked;
  JQ7(".chk").prop("checked",is_checked);
});
于 2013-11-07T23:42:58.817 に答える