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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
JS中类或对象的定义说明
Mar 10 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
May 14 Javascript
总结Node.js中的一些错误类型
Aug 15 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 Javascript
vue.js中指令Directives详解
Mar 20 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
微信小程序实现身份证取景框拍摄
Sep 09 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php 抽象类的简单应用
2011/09/06 PHP
php数组使用规则分析
2015/02/27 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
django解决跨域请求的问题详解
2019/01/20 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
华三通信H3C面试题
2015/05/15 面试题
快餐店的创业计划书范文
2014/01/29 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
个人授权委托书
2014/04/03 职场文书
英文慰问信
2015/02/14 职场文书
小学运动会入场口号
2015/12/24 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Python中的tkinter库简单案例详解
2022/01/22 Python