jquery模拟实现鼠标指针停止运动事件


Posted in Javascript onJanuary 12, 2016

本文实例讲解了鼠标指针停止运动触发事件实例代码,分享给大家供大家参考,具体内容如下
在js中有有内置的鼠标各种事件,比如click事件,mousemove事件等等,但是并没有鼠标指针停止运动这个事件,下面就利用jquery模拟实现此效果,希望能够给需要的朋友带来一定的帮助。
代码如下:

<html>
<head>
<meta charset="gb2312">
<title>鼠标指针停止运动</title>
<style type="text/css">
#top
{
 width:200px;
 height:100px;
 background-color:#ccc;
}
#bottom
{
 width:200px;
 height:100px;
 background-color:#ccc;
}
</style>
<script type="text/javascript" src="http://www.softwhy.com/mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
(function($){
 $.fn.moveStopEvent = function(callback){
  return this.each(function(){
   var x = 0,
   y = 0,
   x1 = 0,
   y1 = 0,
   isRun = false,
   si,
   self = this;
 
   var sif = function(){
    si = setInterval(function(){
     if(x == x1 && y ==y1)
         {
      clearInterval(si);
      isRun = false;
      callback && callback.call(self);
     }
     x = x1;
     y = y1;
    }, 500);
   }
 
   $(this).mousemove(function(e){
    x1 = e.pageX;
    y1 = e.pageY;
    !isRun && sif(), isRun = true;
   }).mouseout(function(){
    clearInterval(si);
    isRun = false;
   });
  });
 }
})(jQuery);
 
$(function(){
 $("#top,#bottom").moveStopEvent(function(){
  alert($(this).attr("id"));
 })
})
</script>
 
</head>
<body>
<div id="top">三水点靠木一</div>
<br/>
<div id="bottom">三水点靠木二</div>
</body>
</html>

以上代码实现了我们的要求,当鼠标指针在div中停止移动之后,就会弹出相应div的id属性值,下面介绍一下它的实现过程。
代码注释:
1.(function($){}(jQuery),声明一个匿名函数,并执行此函数,参数为jQuery对象。
2.$.fn.moveStopEvent=function(callback{}),为jQuery实例对象添加函数。
3.return this.each(function(){}),遍历jQuery对象集合中的每一个DOM元素对象,并且使用此对象作为上下文去执行函数,也就是说function中的this是指向每一个DOM对象的。
4.var x=0,y=0,声明变量x和y并赋初值为0,用来存储鼠标指针的上一个坐标。
5.var x1=0,y1=0,声明变量x1和y1并赋初值为0,用来存鼠标指针当前坐标。
6.var isRun = false,声明一个标记,说明鼠标指针是否在移动。
7.var timer=null,声明一个标记,作为定时器函数的返回值。
8.var self=this,将当前DOM对象的引用赋值给self变量。
9.var sif=function(){},声明一个函数用来判断鼠标指针是否停止运动。
10.timer=setInterval(function(){},500),每隔500毫秒执行一次函数,如果500毫秒内鼠标指针没有位置变化,就认定已经停止移动。
11.x = x1,y = y1,将鼠标指针的当前坐标存入x和y。
12.$(this).mousemove(function(e){}),为当前对象注册mousemove事件处理函数。
13.x1 = e.pageX,将当前鼠标指针横坐标存入x1.
14.y1 = e.pageY,将当前鼠标纵坐标存入y1.
15.!isRun && sif(),isRun = true,如果当前鼠标出于没有移动状态,那么就执行sif()函数,并且将isRun设置为true。也就是说当鼠标指针一直在移动的时候,保证只会执行一次sif()函数,否则可能会执行很多此此函数。
16.mouseout(function(){})注册mouseout事件处理函数,当然这是使用的链式调用。
17.clearInterval(timer),停止定时器函数的运行。
18.isRun = false,将变量的值设置为false,说明鼠标已经停止运动。

以上就是本文的全部内容,附有详细的代码注释,希望对大家学习鼠标事件有所帮助。

Javascript 相关文章推荐
关于JavaScript中的关联数组分析
Apr 09 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
详解Bootstrap的iCheck插件checkbox和radio
Aug 24 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
vue如何实现动态加载脚本
Feb 05 Javascript
Python版实现微信公众号扫码登陆
May 28 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 Javascript
js实现字符串和数组之间相互转换操作
Jan 12 #Javascript
js右下角弹出提示框示例代码
Jan 12 #Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 #Javascript
详解WordPress开发中get_current_screen()函数的使用
Jan 11 #Javascript
提升jQuery的性能需要做好七件事
Jan 11 #Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 #Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 #Javascript
You might like
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
js的三种继承方式详解
2017/01/21 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
深入理解python中的闭包和装饰器
2016/06/12 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python实现图片转字符小工具
2019/04/30 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
django修改models重建数据库的操作
2020/03/31 Python
Python实现爬取并分析电商评论
2020/06/19 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
英国假发网站:Hothair
2018/02/23 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
函授教育个人学习的自我评价
2013/12/31 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
查环查孕证明
2014/01/10 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
小学三年级学生评语
2014/04/22 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python