日期:2014-05-16  浏览次数:20624 次

2010.09.06——— jquery ajax后 事件失效的问题
2010.09.06——— jquery ajax后 事件失效的问题

参考:http://topic.csdn.net/u/20100409/19/18ceb8e2-5c7a-46cd-b5ea-5097a24341ca.html


$(function(){
	
	$("#tblSort01 a").click(function(){
		var qybm = $(this).attr("qybm");
		window.open("${pageContext.request.contextPath}/queryJBXX.action?qybm="+qybm);
		return false;
	});
}


给元素绑定click事件 ,但是遇到一个问题 就是 当我执行一些ajax请求后 这个click事件就失效了

比如说 我的分页是一个ajax请求 但我点下一页时 后生成的元素a就没有了click事件了

其实 原因很简单

ajax加载内容是在$(document).ready()之后的操作,这个时候给绑定函数的时候,找到的元素集合中还不包括ajax加载的内容,所以原来的没有问题,后加载的就没有绑定

解决方法 有两个 :

1. 在ajax请求成功之后重新绑定
2. 用live方法

$("#tblSort01 a").live("click",function(){
		var qybm = $(this).attr("qybm");
		window.open("${pageContext.request.contextPath}/queryJBXX.action?qybm="+qybm);
		return false;
});


两种方法适用在不同的场合

如果是处理事件的话 可以用live
如果是其他一些处理方法的 live就不支持 只能重新绑定