`
axl234
  • 浏览: 266263 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jQuery hover 延时器

 
阅读更多

jQuery的自定义动画的animate方法可以使用delay,例如:$('#foo').slideUp(300).delay(800).fadeIn(400);// 在.slideUp() 和 .fadeIn()之间延时800毫秒。

hover是否可以设计一个延时器呢?答案是肯定的。延时操作目的是为了防止用户误触发事件,一般情况下鼠标指针小于150毫秒的停留时间都可以被忽略。其实,如果入侵delay全能让其作用在hover事件上,但是为了避免John Resig不断的折腾jQuery而导致兼容问题,还是老老实实的写标准插件比较好。

目标

  • 继承jQuery API的优雅:jQuery(expression).mouseDelay(150).hover(over, out)
  • 不得破坏jQuery原型链

 

上述目标看起来很帅气,实现起来却非常简单,仅仅十多行的代码我都不好意思拿来拼凑文章:

源代码

/*! * jQuery.mouseDelay.js v1.2 * http://www.planeart.cn/?p=1073 * Copyright 2011, TangBin * Dual licensed under the MIT or GPL Version 2 licenses. */(function ($, plugin) { var data = {}, id = 1, etid = plugin + 'ETID'; // 延时构造器 $.fn[plugin] = function (speed, group) { id ++; group = group || this.data(etid) || id; speed = speed || 150; // 缓存分组名称到元素 if (group === id) this.data(etid, group); // 暂存官方的hover方法 this._hover = this.hover; // 伪装一个hover函数,并截获两个回调函数交给真正的hover函数处理 this.hover = function (over, out) { over = over || $.noop; out = out || $.noop; this._hover(function (event) { var elem = this; clearTimeout(data[group]); data[group] = setTimeout(function () { over.call(elem, event); }, speed); }, function (event) { var elem = this; clearTimeout(data[group]); data[group] = setTimeout(function () { out.call(elem, event); }, speed); }); return this; }; return this; }; // 冻结选定元素的延时器 $.fn[plugin + 'Pause'] = function () { clearTimeout(this.data(etid)); return this; }; // 静态方法 $[plugin] = { // 获取一个唯一分组名称 get: function () { return id ++; }, // 冻结指定分组的延时器 pause: function (group) { clearTimeout(data[group]); } };})(jQuery, 'mouseDelay');

API说明

方法参数说明mouseDelay (speed, group)速度, 设置延时分组名称设置延时触发效果. 两个参数都是可选的mouseDelayPause()[无]冻结选定元素的延时器jQuery.mouseDelay.pause (group) 延时分组名称冻结指定分组的延时器jQuery.mouseDelay.get ()[无]获取一个不重复的分组名

分享到:
评论

相关推荐

    jQuery hover 延时器实现代码

    这就是`jQuery hover 延时器`的作用。 在给定的代码中,作者提供了一个名为`jQuery.mouseDelay.js`的插件,该插件扩展了jQuery的API,允许我们在`hover`事件上添加延时功能。这个插件的目的是在鼠标进入或离开元素...

    JQuery权威指南源代码

    使用jQuery选择器实现隔行变色 JavaScript代码检测页面元素 jQuery代码检测页面元素 使用jQuery基本选择器 使用jQuery层次选择器 使用jQuery基本过滤选择器 使用jQuery内容过滤选择器 使用jQuery可见性过滤...

    jQuery权威指南-源代码

    其次详细讲解了jQuery的各种选择器、jQuery操作DOM的方法、jQuery中的事件与应用、jQuery中的动画和特效、Ajax在jQuery中的应用,以及各种常用的jQuery插件的使用方法和技巧,所有这些知识点都配有完整的示例(包括...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    setTimeout内不支持jquery的选择器的解决方案

    今天在写一个js延时事件的时候发现在setTimeout这个方法里面使用jquery的$(this)竟然不起作用,各种测试,最后得出结论是setTimeout内不支持jquery的选择器。于是请教了一下QQ上做jquery开发的高手,马上就把这问题...

    李炎恢的jquery教程pdf合集

    3. **事件处理**:详细阐述jQuery中的事件绑定,如`.click()`、`.hover()`等,以及如何使用`.on()`方法处理动态添加的元素的事件。 4. **jQuery动画**:涵盖`.fadeIn()`, `.slideToggle()`, `.animate()`等动画效果...

    【Jquery经典特效1】网站左侧下拉菜单

    这里,当鼠标离开时,会设置一个延时200毫秒的定时器来隐藏子菜单。如果在这段时间内鼠标重新进入,定时器会被清除,从而避免子菜单立即隐藏。 在"Jquery特效资源分享.txt"中,可能包含了更多关于jQuery特效的资料...

    jQuery多级下拉菜单支持多级下拉列表菜单代码

    这段代码首先在文档加载完毕后执行,选择所有的顶级菜单项(`.menu > li`),并添加`hover`事件监听器。当鼠标悬停时,使用`slideToggle`方法平滑地切换子级菜单的可见性。 4. **优化和扩展**: - **防止快速切换...

    jquery_api中文手册

    3. **事件处理**: jQuery 的事件处理非常简单,通过 `.on()` 方法可以绑定多种类型的事件,如点击事件 `click()`, 鼠标悬停事件 `hover()`,以及自定义事件。`.off()` 方法用于解绑事件。 4. **动画效果**: jQuery ...

    jQuery权威指南366页完整版pdf和源码打包

    jquery 选择器/12 2.1 jquery选择器概述/13 2.1.1 什么是选择器/13 2.1.2 选择器的优势/13 2.2 jquery选择器详解/17 2.2.1 基本选择器/18 2.2.2 层次选择器/20 2.2.3 简单过滤选择器 2.2.4 内容过滤...

    jQuery页面左侧伸缩下拉导航菜单

    这可以通过增加一个延时函数(如`setTimeout`)并在离开时清除计时器(`clearTimeout`)来实现: ```javascript var timeoutId; $(document).ready(function() { $('#sidebar-nav > li').hover( function() { ...

    jquery动态下滑菜单

    3. **jQuery事件处理**:使用jQuery选择器和事件监听器,当鼠标悬停在主菜单项上时,显示子菜单。 ```javascript $(document).ready(function() { $('.parent').hover(function() { $(this).find('.subMenu')....

    使用jQuery框架Ajax技术写的自动补全效果

    // 这里可以设置一个延时器,避免频繁请求 if (inputValue.length >= 3) { autocomplete(inputValue); } }); ``` 2. **Ajax调用**:`autocomplete`函数内部使用$.ajax()方法向服务器发起请求。这里需要设置URL...

    15天学会jQuery.rar

    - **选择器**:学习jQuery的各种选择器,如ID选择器、类选择器、元素选择器等,用于精准定位DOM元素。 - **DOM操作**:掌握jQuery中的DOM操作方法,如`$(selector).html()`、`$(selector).append()`等,实现内容的...

    jQuery动画二级下拉菜单代码.zip

    同时,可能还会有一个延时器来控制菜单的关闭,以避免用户快速移动鼠标时菜单频繁闪烁。例如: ```javascript $('.dropdown li').hover(function() { $(this).children('.submenu').stop().slideToggle('fast'); }...

    jquery实现的动感竖向导航效果

    2. **事件处理**:jQuery封装了事件绑定方法,如`click()`、`hover()`等,使得我们可以轻松响应用户的鼠标点击或悬停等行为。在动态导航中,用户点击或悬停在菜单项上时,可能会触发相应的动画效果。 3. **CSS操作*...

    jquery左右旋转图片效果

    1. **选择器(Selectors)**:jQuery提供了一系列CSS选择器来选取DOM元素,如`id`选择器(`#id`)、`class`选择器(`.class`)以及`tag`选择器(`element`)等。在图片旋转效果中,我们可能需要根据图片的ID或类名来选取...

Global site tag (gtag.js) - Google Analytics