javascript - ajax刷新页面后jquery不工作

标签 javascript jquery ajax

我正在使用 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();
 }

最佳答案

如果您动态构建页面的某些部分,则需要使用 $(...).on() 附加事件处理程序,否则在替换元素时事件处理程序将丢失。或者,您也可以在修改页面的该部分时再次重新附加事件处理程序。

您需要将事件处理程序附加到第二个选择器参数,如下所示:

$("#parent").on("click", ".item-to-be-clicked", function () {
    ...
});

委托(delegate)与非委托(delegate)事件处理程序的示例:http://jsfiddle.net/pj5EW/

关于javascript - ajax刷新页面后jquery不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848737/

相关文章:

jquery - 如何使用 AJAX 将数组发布到 Web 服务

ajax - IE https CORS XHR 请求失败,并出现 Script7002 : XMLHttpRequest: Network Error 0x2eff

javascript - 表单上的 JavaScript 验证问题

javascript - 具有可变偏移顶部的 div 上的 ScrollTo 动画无法正常工作

javascript - 使用 JS/jQuery 过滤 PDO 和 MySQL 查询

jquery - 如何选择<tr>中的所有第一个<td>?

javascript - 下载通过 nodejs 响应 POST 请求发送的文件?

javascript - 如何对动态 HTML5 数据描述符执行部分查找?

javascript - 为什么这个 jQuery 代码会导致 IE8 错误 : "UNEXPECTED CALL TO METHOD OR PROPERTY ACCESS"

javascript - 按任何给定的分隔符拆分字符串