鼠标经过(hover)事件的延时处理

关于鼠标hover事件及延时

  鼠标经过事件为web页面上最常见的事件之一。简单的hover可以用CSS :hover伪类实现,复杂点的用js。

  一般情况下,我们是不对鼠标hover事件进行延时处理。但是,有时候,为了避免不必要的干扰,常会对鼠标hover事件进行延时处理。所谓干扰,就是当用户鼠标不经意划过摸个链接,选项卡,或是其他区域时,本没有显示隐藏层,或是选项卡切换,但是由于这些元素上绑定了hover事件(或是mouseover事件),且无延时,这些时间就会立即触发,反而会对用户进行干扰。

比较适用于类似场景:

像腾讯首页,此处选项卡:对鼠标经过事件进行了延时处理

 下面贴出实现代码

(function ($) {
    'use strict'
    $.fn.hoverdelay = function (options) {
        if (typeof options == 'string') {
            options = { feedback: options };
        }

    var settings = $.extend($.fn.hoverdelay.defaults, options || {});
    var hoverTimer, outTimer;
    return this.each(function () {
            var $own = $(this);
            $own.hover(function () {
                clearTimeout(outTimer);
                hoverTimer = setTimeout(function () {
                    settings.mouseover($own);
                }, settings.hoverdelay);
            },
            function () {
                clearTimeout(hoverTimer);
                outTimer = setTimeout(function () {
                    settings.mouseout($own);
                }, settings.hoverremove);
            });
        });
    };

    $.fn.hoverdelay.defaults = {
        hoverdelay: 3000,
        hoverremove: 50,
        mouseover: function (selector) { },
        mouseout: function (selector) { }
    };

})(jQuery);

 

以上代码收集自:海丁网。  张鑫旭 博客详细介绍了此种情况,也给出了实现方式,二者代码没什么差别,个人只是更习惯海丁网参数的命名方式。

我可是最爱用的 Camel 啊,这不科学...

转载于:https://www.cnblogs.com/v10258/p/3259735.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值