几秒钟之后鼠标悬停后,是否还有onmouseover火?

JCa*_*ter 3 javascript onmouseover

我想确保用户希望通过鼠标悬停在div上弹出一些东西.我不希望用户在没有意图的情况下意外触发弹出的内容.setTimeout不起作用,因为即使它非常短暂,弹出窗口仍然会弹出,它只是延迟了.我想要的是用户将鼠标悬停1秒以便弹出显示.

**更新:

当我这样做:

<div onmouseover="myTimer=setTimeout('display(this)', 5000);">
Run Code Online (Sandbox Code Playgroud)

计时器工作,它在5秒后显示,但this没有通过,我无法通过$(element).next()等等获取元素.当我这样做时:

 <div onmouseover="myTimer=setTimeout(display(this), 5000);">
Run Code Online (Sandbox Code Playgroud)

计时器不起作用.有什么不对,怎样才能得到计时器并this通过?

谢谢!

**update2:这里this问题表明:"setTimeout()执行的代码在一个单独的执行上下文中运行,调用它的函数.因此,被调用函数的this关键字将被设置为窗口(或全局)对象,它与调用setTimeout的函数的this值不同."

我发现克服这个答案在这里,你必须"的引用保存到其中setTimeout函数调用的上下文"

Pau*_*aul 6

这应该适合你:

<div id="example">Hover me</div>
<script type="text/javascript">
    (function(){
        var timer;
        var el = document.getElementById('example');

        el.onmouseover = function(){
            timer = setTimeout(function(){
                display(el);
                // If display takes no arguments and uses the "this" keyword inside it
                // Use display.call(el); instead
            }, 1000);
        }

        el.onmouseout = function(){
            clearTimeout(timer);
        }
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

关于JSFiddle的例子