我无法弄清楚我的代码有什么问题。 我有几个全局变量,每次按下某个按钮时我都会更改,还有一些自定义函数执行ajax调用,返回一大块带有下面分页的html代码,其工作方式如下:
$('#foot #pagination a.page').live('click', function(){
window.mode = 'partial';
window.key = $('input#search').val();
window.page = $(this).parent().find('input').val();
setTimeout('getData();', 0);
});
有时当移动到另一个页面时,事件加倍,我得到了双倍的HTML。 当caling getData();从浏览器控制台 - 一切正常,就像它必须工作。 是什么导致这种情况?
答案 0 :(得分:0)
您应该在document.ready
后执行此功能一次。
或者做这样的事情:
$('#foot').off('click', '#pagination a.page', navigation) // remove event
.on('click', '#pagination a.page', navigation); // add event
function navigation(e) {
window.mode = 'partial';
window.key = $('input#search').val();
window.page = $(e.currentTarget).parent().find('input').val();
setTimeout('getData();', 0);
});
答案 1 :(得分:0)
问题是jQuery .live()
在文档就绪时将一些数据推送到jQuery堆栈,但是在ajax响应来自服务器并且再次调用document ready事件之后 - 在这种情况下.live()
推送它数据再次返回到jQuery堆栈,然后导致多个事件正文调用。
我在.die()
之前使用了.live()
,现在一切正常。