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 相关文章推荐
Extjs4 Treegrid 使用心得分享(经验篇)
Jul 01 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
使用layer弹窗和layui表单实现新增功能
Aug 09 Javascript
微信小程序canvas分享海报功能
Oct 31 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
python 切片和range()用法说明
2013/03/24 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python实现简易Web爬虫详解
2018/01/03 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
大学自我鉴定
2013/12/20 职场文书
求职个人评价范文
2014/04/09 职场文书
杨善洲电影观后感
2015/06/04 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers