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函数调用的上下文"
这应该适合你:
<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)
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |