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 相关文章推荐
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
Jan 25 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
angular.js分页代码的实例
Jul 27 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
Oct 14 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
JS传参及动态修改页面布局
Apr 13 Javascript
基于JavaScript实现类名的添加与移除
Apr 23 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
Aug 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php中错误处理操作实例分析
2019/08/23 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
python追加元素到列表的方法
2015/07/28 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
母亲七十大寿答谢词
2014/01/18 职场文书
青春奉献演讲稿
2014/05/08 职场文书
大学生入党自荐书
2015/03/05 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
公证书
2019/04/17 职场文书
python pygame入门教程
2021/06/01 Python
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs