我负载负载()的网页,然后我创建dinamically一个

标签。然后我用活的()绑定一个click事件,并触发功能。在结束通话卸载()。

的问题是,当我再次加载相同页面(不刷新)当单击该功能将被解雇的两倍。如果我(与卸载再次())再次退出并再次点击加载该页面将火3次等等....我的代码样本是:

$('#tab').click(function() {
 $('#formWrap').load('newPage.php');
});
$('div').after('<p class="ctr" ></p>');
$('p.ctr').live('click', function(e) {
   if($(e.target).is('[k=lf]')) { console.log ('one'); delete ($this); }
   else if ....
});
function delete () {
  $.post( 'update.php',  data);
}

我有这个网页上,还对上述现场FNC和所有的工作以及其他$.post内。上面一个也适用,但就像我的第二负载说会触发两次,3次等等... 对我来说,怪异的是,如果replece用的console.log控制台(“二”);保存页面和不刷新,将火上的不同行加载页 - 一二 -

如果我卸载页面替换的console.log控制台(“三”);和负载再次将火一个二,三。 我尝试使用:

$.ajax({ url: 'updateDB.php', data: data, type: 'POST', cache:false });

$.ajaxSetup ({ cache: false });

header("Cache-Control: no-cache");

这一切都不它的工作。而我只有在这个FNC有这个问题。 你认为,这可能是这个原因,它会记住它会记住以前的行为,并再次闪光?

有帮助吗?

解决方案 2

实际上答案属于@vittore。

我就试着更好地解释一点发生了什么:

live () FN是页面内,我是负载。和第一load ()现场FN分配处理器点击。但是当你使用卸载,然后从该页面点击处理器遗迹之间的连接的所有元素。

而当我再次加载相同页面(不刷新),该live功能将保留旧的处理程序,并再次还附上了处理,等等,每次load ()使用它。

特技它die ()前使用unload ()。但有一件事您考虑:我们不能使用live()链接($('div').children().live()将无法正常工作),也不过:

$('.div .ctr').live()将工作。

只是打电话$('.ctr').die()将无法工作。

所以,你必须FN相同的选择$('.ctr').live()使用两者结合,然后$('.ctr').die()

也许这将帮助别人。并且还检查新1.4.2 delegate ()undelegate ()

其他提示

我想你可能必须通过具有VS $一个错字($本)(本);点击 同时注意,在JavaScript中的delete运算符,所以你可能想尝试另一种函数名。结果 你也可能从缓存某处痛苦(默认Web服务器设置.js文件缓存)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top