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 正则替换 replace(regExp, function)用法
May 22 Javascript
js获取网页高度(详细整理)
Dec 28 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 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
PHP4.04简明安装
2006/10/09 PHP
一个简洁的多级别论坛
2006/10/09 PHP
开发大型 PHP 项目的方法
2007/01/02 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python最小二乘法矩阵
2019/01/02 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
html5时钟实现代码
2010/10/22 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
考试作弊检讨书
2014/10/21 职场文书
教师党员整改措施
2014/10/24 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
经费申请报告
2015/05/15 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技