国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

jquery模擬實現(xiàn)鼠標指針停止運動事件

2024-05-06 16:27:39
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了jquery模擬實現(xiàn)鼠標指針停止運動事件示例代碼,感興趣的小伙伴們可以參考一下
 

本文實例講解了鼠標指針停止運動觸發(fā)事件實例代碼,分享給大家供大家參考,具體內容如下
在js中有有內置的鼠標各種事件,比如click事件,mousemove事件等等,但是并沒有鼠標指針停止運動這個事件,下面就利用jquery模擬實現(xiàn)此效果,希望能夠給需要的朋友帶來一定的幫助。
代碼如下:

<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">VeVb武林網(wǎng)一</div><br/><div id="bottom">VeVb武林網(wǎng)二</div></body></html>

以上代碼實現(xiàn)了我們的要求,當鼠標指針在div中停止移動之后,就會彈出相應div的id屬性值,下面介紹一下它的實現(xiàn)過程。
代碼注釋:
1.(function($){}(jQuery),聲明一個匿名函數(shù),并執(zhí)行此函數(shù),參數(shù)為jQuery對象。
2.$.fn.moveStopEvent=function(callback{}),為jQuery實例對象添加函數(shù)。
3.return this.each(function(){}),遍歷jQuery對象集合中的每一個DOM元素對象,并且使用此對象作為上下文去執(zhí)行函數(shù),也就是說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,聲明一個標記,作為定時器函數(shù)的返回值。
8.var self=this,將當前DOM對象的引用賦值給self變量。
9.var sif=function(){},聲明一個函數(shù)用來判斷鼠標指針是否停止運動。
10.timer=setInterval(function(){},500),每隔500毫秒執(zhí)行一次函數(shù),如果500毫秒內鼠標指針沒有位置變化,就認定已經停止移動。
11.x = x1,y = y1,將鼠標指針的當前坐標存入x和y。
12.$(this).mousemove(function(e){}),為當前對象注冊mousemove事件處理函數(shù)。
13.x1 = e.pageX,將當前鼠標指針橫坐標存入x1.
14.y1 = e.pageY,將當前鼠標縱坐標存入y1.
15.!isRun && sif(),isRun = true,如果當前鼠標出于沒有移動狀態(tài),那么就執(zhí)行sif()函數(shù),并且將isRun設置為true。也就是說當鼠標指針一直在移動的時候,保證只會執(zhí)行一次sif()函數(shù),否則可能會執(zhí)行很多此此函數(shù)。
16.mouseout(function(){})注冊mouseout事件處理函數(shù),當然這是使用的鏈式調用。
17.clearInterval(timer),停止定時器函數(shù)的運行。
18.isRun = false,將變量的值設置為false,說明鼠標已經停止運動。

以上就是本文的全部內容,附有詳細的代碼注釋,希望對大家學習鼠標事件有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彭水| 惠水县| 会同县| 富蕴县| 潞城市| 和林格尔县| 绥阳县| 禄劝| 维西| 海安县| 平谷区| 湟源县| 临桂县| 沁源县| 吉木乃县| 彭山县| 米泉市| 克什克腾旗| 卢氏县| 阳原县| 土默特右旗| 章丘市| 当涂县| 塔河县| 太康县| 枝江市| 樟树市| 沙湾县| 香格里拉县| 化隆| 会同县| 葫芦岛市| 林周县| 红原县| 敦煌市| 澎湖县| 镇原县| 无为县| 涟水县| 施秉县| 临湘市|