神经特长 – lazy hover 延迟激活jquery 插件

日期 : 2010年9月7日 19:58 pm 标签 : - 代码浅谈 - 评论 : 12 feet 日历 : 7 Sep 2010


原图地址:淘宝tms里发现,偷过来用用,喜欢就去看看咩~~~

做导航菜单的时候,有的时候希望,鼠标移到菜单上去过会儿才激活二级菜单,鼠标移出去之后过会儿才消失。jquery自带的 hover 事件是立马响应的。google了下网上好像没lazyhover的插件。于是 就华丽丽的诞生了这个lazyhover 的插件^__^。

闲话少说,先上代码:

$(function(){
    $.fn.lazyhover = function(fuc_on, fuc_out, de_on, de_out) {
        var self = $(this);
        var flag = 1;
        var h;
        var handle = function(elm){
            clearTimeout(h);
            if(!flag) self.removeData('timer');
            return flag ? fuc_on.apply(elm) : fuc_out.apply(elm);
        };
        var time_on  = de_on  || 0;
        var time_out = de_out || 500;
        var timer = function(elm){
            h && clearTimeout(h);
            h = setTimeout(function() { handle(elm);  }, flag ? time_on : time_out);
            self.data('timer', h);
        }
        self.hover(
            function(){
                flag = 1 ;
                timer(this);
            },
            function(){
                flag = 0 ;
                timer(this);
            }
        );
    }
});

插件使用方法我就不说了,直接贴带代码前就可以,当然jquery.js是必要的(丫不用jquery就当看A-V =,=)。

算了,还是贴个使用方法吧:使用方法其实跟 jquery一样就是多了两个参数,一个是延迟进入的时间(毫秒),还有一个是延迟退出的时间。

$('#target').lazyhover(
    function(){
            $(this).addClass('unfold');
    },
    function(){
            $(this).addClass('unfold');
    },
    200,1000 //就多了2个参数
);

目前只是个初版,觉得有好多细节可以优化,
待优化点:

  • 1. 比如当延迟时间是0的时候就要避开setTimeout,毕竟setTimeout是个比较耗资源的家伙。
  • 2. 其次当操作对象过多的时候浏览器负载能力的处理,目前是单对象独立时间事件

好了打完收工,有意见想射就射出来吧。哥不怕,咩哈哈~~~~ 用脸接着
开源才是真汉子。

哟?不错哎 订阅飞鱼的RSS Feeds 回去慢慢看^_^

您可能还对这些日志感兴趣

该文章已经被摸了502次。 共有 12 条评论

  1. 1. 小豪 2010年9月8日 at 12:39

    延迟是0的时候就不用这个lazyhover了,直接hover…
    大叔

    回复

    飞鱼 Reply:

    只有一个0 的时候就需要避开 timer

    回复

    小豪 Reply:

    只是如果不需要延迟的时候还用这个lazyhover()就太掘了….直接用hover()更有效率

    回复

    飞鱼 Reply:

    嗯 所以 应该在当timer 为 0 的时候 绕过timer

    回复

    小豪 Reply:

    嘎嘎

    回复

  2. 2. seri 2010年9月8日 at 20:51

    好东西啊

    回复

    飞鱼 Reply:

    晚上又优化了一下。加入了事件出发机制,以及原状态返回嘎嘎

    回复

  3. 3. 叶子 2010年9月9日 at 0:12

    写文章很huang

    回复

    飞鱼 Reply:

    谁h 谁知道,^__^

    回复

  4. 4. 情封 2010年11月13日 at 19:28

    怎么感觉看博客有点看AV,很黄很暴力

    回复

    飞鱼 Reply:

    hoho~ 灰常荣幸“

    回复

  5. 5. mice 2010年12月2日 at 19:10

    我一直在想jquery 有没有这种东西呢..果断拿走..

    回复

发表评论

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签