javascript - jQuery hover如何悬停时间超过500毫秒才会触发hover事件
高洛峰
高洛峰 2017-04-11 10:26:25
[JavaScript讨论组]



    
        
        sem测试
        
    

    
    
        

领域解决方案

从商务和财务到销售与服务,金蝶的解决方案盖所有业务线。深入了解面向你所在业务线部门的解决方案组合,连接所有数据,驱动成功。

.协同管理(OA系统)

  • .助企业解决ERP集成问题 – ERP一体化解决方案
  • .流程监控实时掌握 – 实现企业各部门业务的电子流转
  • .纸质资料电子化,方便共享 -保证信息资料安全,加快资料的传播及共享
  • .云管理打造无边界工作方式

.产品生命周期管理(PLM系统)

  • .111111助企业解决ERP集成问题 – ERP一体化解决方案
  • .流程监控实时掌握 – 实现企业各部门业务的电子流转
  • .纸质资料电子化,方便共享 -保证信息资料安全,加快资料的传播及共享
  • .云管理打造无边界工作方式

.人力资源管理(S-HR)

  • .高层角色
  • .人力资源角色
  • .直线经理人角色
  • .其他领域解决方案

.人力资源管理(S-HR)

  • .高层角色
  • .人力资源角色
  • .直线经理人角色
  • .其他领域解决方案

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
黄舟

你这里不是已经有解决方案了么?还问啥?

jQuery(document).ready(function($) {
    var timer;
    $(".xt").on({
        "mouseenter": function() {
            clearTimeout(timer);
            timer = setTimeout(function() {
                //这里触发hover事件
            }, 500);
        },
        "mouseleave": function() {
            clearTimeout(timer);
        }
    });
});

看了 @q_tian 的回复,补充一下吧,对于多个 .xt,有几个办法可以让每个 .xt 保持自己的 timer

方法一,使用 data

jQuery(document).ready(function($) {
    // var timer;
    $(".xt").on({
        "mouseenter": function() {
            var timer = $(this).data("timer");
            clearTimeout(timer);
            timer = setTimeout(function() {
                //这里触发hover事件
            }, 500);
            $(this).data("timer", timer);
        },
        "mouseleave": function() {
            var timer = $(this).data("timer");
            clearTimeout(timer);
        }
    });
});

方法二,使用闭包

jQuery(document).ready(function($) {
    // var timer;
    function getBinds() {
        var timer;
        return {
            "mouseenter": function() {
                clearTimeout(timer);
                timer = setTimeout(function() {
                    //这里触发hover事件
                }, 500);
            },
            "mouseleave": function() {
                clearTimeout(timer);
            }
        };
    }
    
    $(".xt").each(function() {
        $(this).on(getBinds());
    });
});
ringa_lee

或许你可以换个思路解决,比如从动画执行上延迟500毫秒

PHP中文网

你的思路是对的,但是你的timer只有一个,被多个class=xt的span共用了,你快速在这些span中移动,应该就会发现问题了。
为每一个span设置一个唯一的timer
$(".xt").each(function(i, v){

var timer;

// 绑定事件
});

给题主安利一下css3的transition,
类似的需求或许用css3就可以了

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

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