【问题标题】:jQuery Rebinding a hover event (helper)jQuery 重新绑定悬停事件(助手)
【发布时间】:2010-09-23 23:03:56
【问题描述】:

页面加载完成后,我调用一个函数,将悬停事件置于 $('a.tooltip') 上。当我想取消绑定此事件时,我会执行以下操作:

   $('a.tooltip').unbind('mouseover mouseout');

这行得通!但是,当我想重新绑定悬停事件并再次调用在文档就绪时首次加载的函数时,它不会重新绑定悬停助手。如何重新绑定?

谢谢,

【问题讨论】:

    标签: jquery binding


    【解决方案1】:

    您确定解绑工作正常吗?根据我的经验, .hover() 确实可以正确重新绑定,但我不得不使用这种取消绑定语法:

    $(this).unbind('mouseenter').unbind('mouseleave');
    

    当我尝试将这两个事件放入一个 unbind() 时,它只解开了其中一个。

    我想知道这是否发生在你身上? (或者如果mouseovermouseenter 等的选择很重要?)

    更新

    根据quirksmode.orgmouseentermouseleave 是特定于IE 的事件,但正如Jimmy 在cmets 中指出的那样,jQuery 也为其他浏览器实现了它们。

    【讨论】:

    • 谢谢!!这绝对很重要,因为这只是修复了它。我现在可以再次 .hover() 并重新绑定它。
    • 我相信jquery实现了mouseenter和mouseleave
    【解决方案2】:

    我发现当我使用 bind 方法时,事情可能有点繁琐。您可能想尝试使用 hover(over, out) 功能:

     $(this).hover( 
        function() {
           if (okayToHover) { dowhatever; } 
        },
        function() {
           if (okayToUnhover) { undowhatever; }
        });
    

    我知道这似乎有点迂回,但我发现悬停功能让我可以更好地控制正在发生的事情,而且无论出于何种原因,它似乎都能更好地工作。不过,这只是我的经验……

    【讨论】:

    • 在幕后,jQuery 的 .hover() 只是绑定了传统的 JS 鼠标事件。如果出于某种原因您想禁用并稍后重新启用悬停功能,您会怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2012-06-23
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多