【问题标题】:jquery: Cant unbind hover event?jquery:无法取消绑定悬停事件?
【发布时间】:2011-02-06 17:22:54
【问题描述】:

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

这行得通

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');    
}

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

【问题讨论】:

  • 对我来说很好(通过取消绑定 mouseentermouseleave 取消绑定悬停)您在哪种情况下调用 enable_continue_button() ?顺便说一句,您的 addClass 函数错误,您应该删除逗号。基于此,您确定将fadedtt 添加为类吗?也许调用nable_continue_button() 失败并且没有添加类,所以它们似乎被删除了。
  • @felix - 抱歉,这里的逗号是一个错字。奇怪的是它对你有用!
  • 好的。看这里jsfiddle.net/ebpM3 所以你绝对可以这样解绑hover(文字不会变红)。您是否收到任何错误消息,并且您确定这些类已被删除(即 enable_continue_button 被调用)?。

标签: javascript jquery events unbind


【解决方案1】:

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

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

编辑:

仅解除 mouseenter 和 mouseleave 的绑定就足够了。

这里是 an example 来展示它的工作原理。当上述 4 个事件未绑定时,tooltip 功能被移除。

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

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

【讨论】:

  • 只需 mouseenter/mouseleave 就足够了。这些是 jQuery 事件(与悬停不同 - 您可以通过检查 jQuery.event.special 来检查),因此即使浏览器没有本地 mouseenter 事件,这也是事件处理程序将绑定到的名称。
  • 您好,您的示例绝对有效,因此我的代码一定有问题。奇怪的是我的 enable_continue_button() 函数肯定是删除类但没有解除绑定工具提示...
【解决方案2】:

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

【讨论】:

  • 不确定,但它可能是一个开始和向后工作的地方。您也可以尝试使用 jQuery 的 .live() 并将事件与您要删除的类联系起来。当您删除类时,这应该取消绑定事件。 api.jquery.com/live
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多