首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript onHover事件

Javascript onHover事件
EN

Stack Overflow用户
提问于 2008-11-04 17:59:48
回答 4查看 164.3K关注 0票数 43

有没有一种规范的方法来使用现有的onmouseover、onmouseout和某种计时器来设置JS onHover事件?或者,当且仅当用户将鼠标悬停在元素上一段时间时,触发任意函数的任何方法。

EN

回答 4

Stack Overflow用户

发布于 2008-11-04 19:50:40

像这样怎么样?

代码语言:javascript
复制
<html>
<head>
<script type="text/javascript">

var HoverListener = {
  addElem: function( elem, callback, delay )
  {
    if ( delay === undefined )
    {
      delay = 1000;
    }

    var hoverTimer;

    addEvent( elem, 'mouseover', function()
    {
      hoverTimer = setTimeout( callback, delay );
    } );

    addEvent( elem, 'mouseout', function()
    {
      clearTimeout( hoverTimer );
    } );
  }
}

function tester()
{
  alert( 'hi' );
}

//  Generic event abstractor
function addEvent( obj, evt, fn )
{
  if ( 'undefined' != typeof obj.addEventListener )
  {
    obj.addEventListener( evt, fn, false );
  }
  else if ( 'undefined' != typeof obj.attachEvent )
  {
    obj.attachEvent( "on" + evt, fn );
  }
}

addEvent( window, 'load', function()
{
  HoverListener.addElem(
      document.getElementById( 'test' )
    , tester 
  );
  HoverListener.addElem(
      document.getElementById( 'test2' )
    , function()
      {
        alert( 'Hello World!' );
      }
    , 2300
  );
} );

</script>
</head>
<body>
<div id="test">Will alert "hi" on hover after one second</div>
<div id="test2">Will alert "Hello World!" on hover 2.3 seconds</div>
</body>
</html>
票数 30
EN

Stack Overflow用户

发布于 2008-11-04 18:02:43

你能澄清你的问题吗?在这种情况下,什么是"ohHover“,它如何对应于悬停时间的延迟?

也就是说,我想你可能想要的是...

代码语言:javascript
复制
var timeout;
element.onmouseover = function(e) {
    timeout = setTimeout(function() {
        // ...
    }, delayTimeMs)
};
element.onmouseout = function(e) {
    if(timeout) {
        clearTimeout(timeout);
    }
};

或者addEventListener/attachEvent或者你最喜欢的库的事件抽象方法。

票数 17
EN

Stack Overflow用户

发布于 2009-06-04 16:29:58

如果您使用JQuery库,则可以使用.hover()事件,它合并了mouseover和mouseout事件,并帮助您处理时间和子元素:

代码语言:javascript
复制
$(this).hover(function(){},function(){});

第一个函数是悬停的开始,下一个是结束。有关更多信息,请访问:http://docs.jquery.com/Events/hover

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/262740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档