单击时无法取消绑定鼠标

我有一个jquery脚本,如果你使用mouseenter和element,它会显示一些内容,并在你mouseleave时消失。 我试图在用户点击时取消绑定鼠标,以便在用户离开时“某些东西”保持显示状态。 这是正确的方法吗? 如果是这样,有人可以帮助我让这个脚本工作吗?

谢谢!

$('.block').live("mouseenter",function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).show(); }).live("mouseleave",function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).hide(); }).live("click",function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).show(); $(this).unbind("mouseleave"); }); 

谢谢!

所以我不认为你想要的是完全可能的。 问题似乎是使用.live和unbind。 您可以使用.die取消绑定mouseleave事件。 但是,使用的选择器必须与最初用于绑定事件的选择器匹配,在您的情况下为.block 。 我觉得这显然很糟糕。 .die的示例小提琴

http://jsfiddle.net/EZNDg/

我认为你需要使用显式选择器绑定当前元素,所以也许使用.each和你的选择器然后用$(this)绑定。 这应该允许死亡工作。 我会弄乱这个小提琴,看看它是否属实。

您需要创建要在事件上执行的函数作为变量,以确保您的javascript的完整性,以便您的示例:

 var fShow = function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).show(); }; var fHide = function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).hide(); }; var fClick = function(){ var id= $(this).attr('id'); $('#arrowPreview'+id).show(); }; $('.block').bind('mouseenter',fShow); $('.block').bind('mouseleave',fHide); $('.block').unbind('mouseleave',fHide); 

live绑定的事件与die约束