在悬停div上解除绑定后绑定

时间:2013-12-25 12:44:22

标签: jquery html

我有这个div .overlay,当它被点击时,mousebin和mouseleave被unbind禁用,并且工作正常。

现在,当我将鼠标悬停在div .container上时,我希望mouseenter和mouseleave再次返回(绑定)“.overlay”div,但这不会发生。

这是我的代码

$(document).ready(function(){
    $(".overlay").click(function(){
        $(".overlay").unbind('mouseenter mouseleave');
    });
    $(".container").hover(function(){
        $(".overlay").bind('mouseenter mouseleave');
    });   
});

希望somone可以提供帮助,非常感谢。

2 个答案:

答案 0 :(得分:0)

绑定事件需要一个实际运行的函数。我拿了你的代码并添加了两个位,一个鼠标事件的记录器和一些重置日志的东西:

$(".overlay").click(function(){
    $(".overlay").unbind('mouseenter mouseleave');
    $("#messages").html("unbound");
});

$(".container").hover(function(){
    $(".overlay").bind('mouseenter mouseleave', 
        function(){ $("#messages").append("mouse event");});
});

您可以在http://jsfiddle.net/E8LY9/看到它正常工作。除了mouseenter和mouseleave的回调之外,你的代码似乎做得很好。

有一点让我觉得你希望容器与叠加层完全分开,所以我更新了小提琴,把它们作为单独的元素:

http://jsfiddle.net/E8LY9/2/

答案 1 :(得分:0)

一旦unbind,您实际上是通过删除该事件的处理程序来禁用该事件。当你mouseenter/mouseleave开始播放时,我不知道你想要解雇什么,但是让我们说你要改变字体颜色:

    $(".overlay").mouseenter(function () {
        $(this).css({color: 'red'});
    }).mouseleave(function () {
        $(this).css({color: 'black'});
    });

然后你取消绑定(取消绑定工作),但不知何故重新绑定不?它实际上确实已经删除了该事件的先前绑定执行,因此您需要重建它。解决方案是将其放在function中并调用该函数来重新绑定事件。

选中jsfiddle