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 相关文章推荐
jQuery获取文本节点之 text()/val()/html() 方法区别
Mar 01 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
May 28 Javascript
利用js canvas实现五子棋游戏
Oct 11 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
pandas中去除指定字符的实例
2018/05/18 Python
详解python3中zipfile模块用法
2018/06/18 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
部队领导证婚词
2014/01/12 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
体育活动总结范文
2014/05/04 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript