javascript - js如何判断鼠标在元素之上稍有停顿,进而动作?
天蓬老师
天蓬老师 2017-04-10 14:36:35
[JavaScript讨论组]

这个问题不太好表达,类似于SF的标签元素,鼠标在其上停滞一两秒才开始发起请求而如果是很快的划过则不动作。我用的是mouseover和mouseleave,但貌似实现不了这效果,大家是怎么实现的?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
巴扎黑

我没有发现 SF 的标签元素有延迟动作啊……

不过如果你想实现的话,可以在 mouseovermouseleave 事件里处理。mouseover 事件里用一个 setTimeout 延迟触发,记录下返回的 timerId,之后在 mouseleave 里用 clearTimeout 把延迟处理取消掉(如果还没触发的话)

代码大概就像这样(仅示意)

// 通过一个闭包来封闭 timerId 变量,使之不被外界访问到
(function(node) {
    var timerId = 0
    node.onmouseover = function() {
        clearTimeout(timerId)
        timerId = setTimeout(function() {
            // 这里是你想做的事情,延迟500毫秒触发
        }, 500)
    }
    node.onmouseleave = function() {
        clearTimeout(timerId)
    }
})(domNode /* 要触发相关事件的DOM元素 */)

刚注册了账号在 jsfiddle 上写了段代码试验

http://jsfiddle.net/jamesfancy/751s4m9x/2/

PHP中文网

CSS3 transition

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号