jquery hover 不停閃動(dòng)問題的解決方法(亦為stop()的使用)
在前端開發(fā)中用的較多的是jquery,之前遇到一個(gè)問題,一個(gè)下拉的jquery下拉菜單效果,hover上去,一直閃動(dòng),用mouseovermouseout好好的,當(dāng)時(shí)沒搞定,今天逛論壇看到一個(gè)方法,可以行.只怪自己之前看jquery api的時(shí)候不是很仔細(xì)。
解決閃動(dòng) 可以使用Stop()
stop([clearQueue],[jumpToEnd])
概述
停止所有在指定元素上正在運(yùn)行的動(dòng)畫。
如果隊(duì)列中有等待執(zhí)行的動(dòng)畫(并且clearQueue沒有設(shè)為true),他們將被馬上執(zhí)行
參數(shù)
[clearQueue],[gotoEnd] Boolean,BooleanV1.2clearQueue:如果設(shè)置成true,則清空隊(duì)列??梢粤⒓唇Y(jié)束動(dòng)畫。
gotoEnd: 讓當(dāng)前正在執(zhí)行的動(dòng)畫立即完成,并且重設(shè)show和hide的原始樣式,調(diào)用回調(diào)函數(shù)等。
[queue],[clearQueue],[jumpToEnd]BooleanV1.7queue:用來停止動(dòng)畫的隊(duì)列名稱
clearQueue: 如果設(shè)置成true,則清空隊(duì)列。可以立即結(jié)束動(dòng)畫。
jumpToEnd: 如果設(shè)置成true,則完成隊(duì)列。可以立即完成動(dòng)畫。
當(dāng)鼠標(biāo)移上去的時(shí)候就菜單下拉,當(dāng)鼠標(biāo)離開的時(shí)候菜單上卷,下拉和上卷的動(dòng)畫時(shí)間都是5秒種。
$("#menu").hover( function () { $("#menu").animate({ height: "500" }, 5000); }, function () { $("#menu").animate({ height: "100" }, 5000); } );
如果我快速不斷地將鼠標(biāo)移入移出菜單(即,當(dāng)菜單下拉動(dòng)畫未完成時(shí),鼠標(biāo)又移出了菜單)就會(huì)產(chǎn)生“動(dòng)畫積累”,當(dāng)鼠標(biāo)停止移動(dòng)后,積累的動(dòng)畫還會(huì)持續(xù)執(zhí)行,直到動(dòng)畫序列執(zhí)行完畢。這樣導(dǎo)致動(dòng)畫效果與鼠標(biāo)動(dòng)作不一致。
要解決此問題只需要在移入移出動(dòng)畫之前加入stop(),結(jié)束當(dāng)前動(dòng)畫進(jìn)入下個(gè)動(dòng)畫即可。
代碼如下:
$("#menu").hover( function () { $("#menu").stop().animate({ height: "500" }, 5000); }, function () { $("#menu").stop().animate({ height: "100" }, 5000); } );
如果需到組合動(dòng)畫,在移入移出動(dòng)畫之前加入stop()來停止當(dāng)前動(dòng)畫,如下
$("#menu").hover( function () { $("#menu").stop().animate({ height: "500" }, 5000).animate({ width: "500px" }, 3000); }, function () { $("#menu").stop().animate({ height: "100" }, 5000).animate({ width: "100px" },3000); } );
效果并不好,因?yàn)閟top()只是停止了當(dāng)前第一步的動(dòng)畫(即{height:”500″}),然后又進(jìn)入了第二步的動(dòng)畫(即[width:”500″})。
此時(shí)stop()的第一個(gè)參數(shù)就派上了用場(chǎng),它會(huì)把下面沒有執(zhí)行的動(dòng)畫序列都清空掉。
$("#menu").hover( function () { $("#menu").stop(true).animate({ height: "500" }, 5000).animate({ width: "500px" }, 5000); }, function () { $("#menu").stop(true).animate({ height: "100" }, 5000).animate({ width: "100px" },5000); } );
當(dāng)然也可以使用第二個(gè)參數(shù),讓動(dòng)畫達(dá)到最后狀態(tài)。如:stop(false,true)
以上這篇jquery hover 不停閃動(dòng)問題的解決方法(亦為stop()的使用)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 詳解jQuery停止動(dòng)畫——stop()方法的使用
- jQuery stop()用法實(shí)例詳解
- 逐一介紹Jquery data()、Jquery stop()、jquery delay()函數(shù)(詳)
- jquery中animate的stop()方法作用實(shí)例分析
- 理解jQuery stop()方法
- JQuery動(dòng)畫animate的stop方法使用詳解
- Jquery ajaxStart()與ajaxStop()方法(實(shí)例講解)
- Jquery阻止事件冒泡 event.stopPropagation
- jq stop()和:is(:animated)的用法及區(qū)別(詳解)
相關(guān)文章
jQuery實(shí)現(xiàn)的超酷蘋果風(fēng)格圖標(biāo)滑出菜單效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)的超酷蘋果風(fēng)格圖標(biāo)滑出菜單效果代碼,涉及jQuery基于鼠標(biāo)hover事件動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,非常美觀實(shí)用,需要的朋友可以參考下2015-09-09jquery ajax異步提交表單數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了jquery ajax異步提交表單數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10JQuery 獲取多個(gè)select標(biāo)簽option的text內(nèi)容(實(shí)例)
下面小編就為大家?guī)硪黄狫Query 獲取多個(gè)select標(biāo)簽option的text內(nèi)容(實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09EasyUI,點(diǎn)擊開啟編輯框,并且編輯框獲得焦點(diǎn)的方法
這篇文章主要介紹了EasyUI,點(diǎn)擊開啟編輯框,并且編輯框獲得焦點(diǎn)的方法,需要的朋友可以參考下2015-03-03jQuery中hover與mouseover和mouseout的區(qū)別分析
這篇文章主要介紹了jQuery中hover與mouseover和mouseout的區(qū)別,結(jié)合實(shí)例分析了jQuery中hover與mouseover和mouseout的區(qū)別與使用技巧,需要的朋友可以參考下2015-12-12JQuery動(dòng)態(tài)創(chuàng)建DOM、表單元素的實(shí)現(xiàn)代碼
代碼很簡(jiǎn)單,直接上代碼。別忘記引用JQuery包。2011-08-08基于jQuery實(shí)現(xiàn)網(wǎng)頁(yè)進(jìn)度顯示插件
這篇文章主要介紹了基于jQuery實(shí)現(xiàn)網(wǎng)頁(yè)進(jìn)度顯示插件的實(shí)現(xiàn)方法以及源碼下載,十分的詳細(xì),并自帶2種皮膚,這里推薦給小伙伴們。2015-03-03jQuery實(shí)現(xiàn)動(dòng)態(tài)操作table行
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)操作table行,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11Jquery動(dòng)態(tài)列功能完整實(shí)例
這篇文章主要介紹了Jquery動(dòng)態(tài)列功能,結(jié)合完整實(shí)例形式詳細(xì)分析了jQuery基于事件響應(yīng)及頁(yè)面元素動(dòng)態(tài)屬性操作實(shí)現(xiàn)的動(dòng)態(tài)列顯示功能相關(guān)操作技巧,需要的朋友可以參考下2019-08-08