单击时无法取消绑定鼠标

时间:2011-10-12 02:25:08

标签: jquery binding click mouseevent

我有一个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");
    });

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要创建在事件上执行的函数作为变量,以确保您的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);

答案 1 :(得分:1)

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

http://jsfiddle.net/EZNDg/

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

答案 2 :(得分:0)

live绑定的事件未与die

绑定