jquery:不能解开悬停事件?

时间:2011-02-06 17:22:54

标签: javascript jquery events unbind

我的继续按钮有一个悬停事件,告诉您它被禁用的原因。唯一的问题是,当我启用按钮时,我无法删除悬停事件....

此作品

function disable_continue_button(){
    $('#frame_2 > .next')
        .addClass('faded tt')
        .hover(function(){
            $hovered = $(this);
            //tooltip?
            tip = $('.tip.notification.information');
            tip.find('div').html($hovered.attr('tt'));
            tip.fadeIn(150);
        },
        function() {
            tip.hide();   
        })
        .mousemove(function(e) {
            var mousex = e.pageX +40; //Get X coodrinates
            var mousey = e.pageY -20; //Get Y coordinates
            tip.css({top: mousey, left: mousex });
        });    
}

这不起作用

function enable_continue_button(){
    $('#frame_2 > .next')        
        .unbind('mouseenter mouseleave mousemove')
        .removeClass('faded tt');    
}

这些类被删除了,但是没有删除悬停工具提示......

2 个答案:

答案 0 :(得分:5)

尝试取消绑定mouseenter,mouseleave,mouseover和mouseout。

$('#frame_2 > .next').unbind('mouseenter mouseleave mouseover mouseout');

编辑:

仅仅解除鼠标中心和鼠标距离就足够了。

这是 an example 以显示它的工作原理。当上述4个事件未绑定时,将删除工具提示功能。

.hover(fnEnter, fnLeave)基本上是.mouseenter(fnEnter).mouseleave(fnLeave)的简写。

由于并非所有浏览器本身都支持这两个事件,(如果我没记错,只有IE会这样做),mouseenter()映射到mouseover()mouseleave()映射到mouseout(),在每种情况下都有一些额外的逻辑来模拟事件。

答案 1 :(得分:0)

这个相关问题可以帮助你解开所有问题,然后你可以重新绑定你需要的东西吗? how to unbind all event using jquery