Javascript 单击事件重复4次 我的代码

Javascript 单击事件重复4次 我的代码,javascript,jquery,Javascript,Jquery,在我将点击事件从“Link”中取消绑定四次之前,我试图弄清楚它为什么会这样做。在一次又一次地阅读了我的代码几个小时后,我想,让我们尝试删除点击事件,但我错误地将该行放在了错误的位置(我想是出于失望)。我运行了密码,维奥拉!成功了!怎么用?我不知道 现在我的问题是,为什么在添加click事件之前解除它的绑定会阻止该过程的重复?我真的很想知道为什么。 谢谢 因为每次鼠标进入object post.DivPostContent时,它都会将一个新的单击事件绑定到链接对象;它触发了4次,因为你鼠标移动了4

在我将点击事件从“Link”中取消绑定四次之前,我试图弄清楚它为什么会这样做。在一次又一次地阅读了我的代码几个小时后,我想,让我们尝试删除点击事件,但我错误地将该行放在了错误的位置(我想是出于失望)。我运行了密码,维奥拉!成功了!怎么用?我不知道

现在我的问题是,为什么在添加click事件之前解除它的绑定会阻止该过程的重复?我真的很想知道为什么。
谢谢

因为每次鼠标进入object post.DivPostContent时,它都会将一个新的单击事件绑定到链接对象;它触发了4次,因为你鼠标移动了4次以上

忘记。生活&点击;改为使用.on并绑定一次&在您的mouseenter事件之外,或者如果您坚持要在其中绑定,请在之前使用.off

 $elem.off("click").on("click",function() {});
但是在鼠标中心外做一次

现在我的问题是,为什么在添加click事件之前解除它的绑定会阻止该过程的重复

守则:

link.click(function(){
    post.link_action(post_id);
});
click
事件添加回调,如果您多次注册,例如在您的案例中
onmouseenter
您将多次触发同一事件

unbind
函数删除以前对特定事件的任何回调,因此回调只触发一次

顺便说一下,除非您的jQuery版本是1.4.3或更低,否则您不应该取消订阅
live


使用
on
(可从1.7版获得)或
delegate
(可从1.4.4版获得)。

每次输入函数时,鼠标指针都会将新的侦听器附加到元素,而不是替换它。通过取消绑定,它删除了以前的单击绑定。举个例子。单击绑定并没有取代当前的绑定,它只是添加了更多的处理程序。哈,我得到了它,谢谢@user829323:)我现在得到了它,谢谢:)哦,我最初在同一段代码上使用了.on(),但它不起作用,这就是我求助于.live()的原因:(@SaffronHarris,我建议您返回上的
并学习如何使用它。您可能只是没有使用选择器,因此没有创建委托事件。嗯,这是否意味着我可能必须更改为“悬停”如果我使用on?有什么不好的。无论如何,live?@SaffronHarris,你仍然可以使用你想要的事件。谢谢,我现在明白了:)相反,$elem是什么?它是你想要绑定的任何jquery对象&然后继续
link.click(function(){
    post.link_action(post_id);
});