Nll*_*Nll 2 javascript ajax jquery
我正在使用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" />
Run Code Online (Sandbox Code Playgroud)
我把所有代码放在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();
}
Run Code Online (Sandbox Code Playgroud)
如果您动态构建页面的一部分,则需要使用$(...).on()附加事件处理程序,否则在替换元素时将丢失事件处理程序.或者,您也可以在修改页面的该部分时再次重新附加事件处理程序.
您需要使用第二个选择器参数附加事件处理程序,如下所示:
$("#parent").on("click", ".item-to-be-clicked", function () {
...
});
Run Code Online (Sandbox Code Playgroud)
委托与非委托事件处理程序的示例:http://jsfiddle.net/pj5EW/
Li带李·赖安的答案:
按照目前的编码,您的点击处理程序将仅应用于DOM中已经存在的元素。在DOM加载后动态生成这些元素时,您的点击处理程序将看不到它们。
您可以使用jQuery的on(),以委托的事件。这会将处理程序放在文档(而不是元素)上,并允许您选择在DOM加载后添加到页面的元素:
JQ7(document).on('click','#chkAll',function(){
var is_checked=this.checked;
JQ7(".chk").prop("checked",is_checked);
});
Run Code Online (Sandbox Code Playgroud)