Jquery - 延迟 mouseout 事件

Posted

技术标签:

【中文标题】Jquery - 延迟 mouseout 事件【英文标题】:Jquery - Delay mouseout event 【发布时间】:2011-01-17 01:35:58 【问题描述】:

有没有办法让 jQuery 在触发 mouseout 事件之前等待一段时间?

目前它触发得太早了,我宁愿等待 500 毫秒,然后再评估鼠标。下面是我使用的代码示例。

$('.under-construction',this).bind(
    mousemove: function(e) 
        setToolTipPosition(this,e);
        css('cursor' : 'crosshair' );
    ,
    mouseover: function() 
        $c('show!');
        showUnderConstruction();
    ,
    mouseout: function() 
        $c('hide!');
        hideUnderConstruction();
    ,
    click: function() 
        return false;
    
);

有没有 jQuery 方法可以做到这一点,还是我必须自己做?

【问题讨论】:

showUnderConstruction().delay(500); hideUnderConstruction().delay(500); 【参考方案1】:

mouseout 中的逻辑拆分为另一个函数。在mouseout 中甚至使用setTimeout("myMouseOut", 500) 调用此函数。如果用户移动到新元素,您可以将mouseover 事件与clearTimeout() 结合起来重置计时器。

【讨论】:

【参考方案2】:

您始终可以将您的逻辑包装在 setTimeout() 函数中。

mouseout: function() 
  setTimeout(function()
    $c('hide!');
    hideUnderConstruction();
  , 500);

【讨论】:

【参考方案3】:

您可以查看hoverIntent plugin 让您定义一些有助于鼠标输入/输出交互的变量

【讨论】:

以上是关于Jquery - 延迟 mouseout 事件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery因mouseover,mouseout冒泡产生的闪烁问题

jquery:即使在我使用单击事件隐藏 div 之后也会触发 mouseout 事件

如何解决鼠标移动到子元素 会触发父元素的mouseout事件

jQuery mouseove和mouseout事件不断触发

jQuery mouseover与mouseenter,mouseout与mouseleave的区别

mouseover和mouseout事件在鼠标经过子元素时也会触发