<source id="egy4e"><tr id="egy4e"></tr></source><td id="egy4e"><tr id="egy4e"></tr></td>
<noframes id="egy4e"><tbody id="egy4e"></tbody></noframes>
  • \n
    \n
    \n
    \n\n測(cè)試用的文字\n<\/i>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    首頁(yè) web前端 js教程 分享有關(guān)jQuery中animate、slide、fade等動(dòng)畫的連續(xù)觸發(fā)、滯後反覆執(zhí)行的bug_jquery

    分享有關(guān)jQuery中animate、slide、fade等動(dòng)畫的連續(xù)觸發(fā)、滯後反覆執(zhí)行的bug_jquery

    May 16, 2016 pm 03:20 PM

    我寫文章的風(fēng)格就是喜歡在開頭講問(wèn)題法傷的背景:

    因?yàn)樽罱鰝€(gè)操作選項(xiàng)的呼出,然後就想到了用預(yù)設(shè)隱藏,滑鼠劃過(guò)的時(shí)候顯示的方法。

    剛開始打算加入一個(gè)class="active",直接觸發(fā)mouseover(或mouseenter)的時(shí)候add,mouseout(或mouseleave)的時(shí)候remove,這個(gè)解決方法很簡(jiǎn)單,也很實(shí)用,但是體驗(yàn)上可能不是那麼酷炫(好吧,這個(gè)字用的,瞬間感覺(jué)好low?。跃拖氲搅擞胊nimate或者slide這些jQuery的動(dòng)畫,然後一開始講真,這個(gè)插件自己寫,會(huì)碰到些問(wèn)題,不太好實(shí)現(xiàn)(畢竟js掌握的不是很到位),然後聽同事講去找jquery,導(dǎo)入後直接引用就可以了。

    (還好我沒(méi)養(yǎng)成一碰到要做某個(gè)特效,第一反應(yīng)是網(wǎng)上找插件,說(shuō)起這個(gè),又想到前幾天碰到的關(guān)於將table中的表頭對(duì)界面滾動(dòng)而固定的那個(gè)解決方法了,過(guò)幾天傳上來(lái),講真,那個(gè)方法網(wǎng)上找了一圈沒(méi)找到合適的解決方法,最後我自己想了個(gè)方法,還是蠻有成績(jī)感的,雖然有可能不是最優(yōu)的解法)

    回到正題,網(wǎng)路上找了一圈,講真,別人的插件,做的確實(shí)很贊,而且各種瀏覽器下的兼容性也解決了,不過(guò)我個(gè)人而言,只在兩三個(gè)頁(yè)面用到,而且要導(dǎo)入文件(這個(gè)好像不是特別麻煩),又要用別人的,終歸沒(méi)什麼成就感。

    然後,最後還是自己動(dòng)手寫了,雖然花了點(diǎn)時(shí)間,也碰到了一些問(wèn)題,不過(guò)還是不錯(cuò)的,問(wèn)題也最後解決了,至少對(duì)幾個(gè)jQuery的內(nèi)置函數(shù)又熟悉了一點(diǎn)。

    ps:最後補(bǔ)充一句,在我自己找出解決方案後,再次百度了一下,好吧,出來(lái)的第一個(gè)網(wǎng)頁(yè)鏈接,點(diǎn)進(jìn)去就是我所用的方法。

    bug重現(xiàn):原本想做個(gè)動(dòng)圖的,好像太麻煩了,還是上程式碼吧,知道這個(gè)問(wèn)題的應(yīng)該不用看動(dòng)圖也知道是個(gè)怎麼樣的問(wèn)題;不知道這個(gè)問(wèn)題的,可以先把代碼拷貝下來(lái)試試看。

    PS:以下以animate動(dòng)畫為例

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <title>test</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="./bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="./font-awesome/css/font-awesome.min.css">
    <script src="./bootstrap/js/jquery-1.11/jquery.min.js"></script>
    <script src="./bootstrap/js/bootstrap.min.js"></script>
    </head>
    <body>
    <div style="width:70%;margin:50px auto;height:300px;">
    <div id="test" style="width:900px;height:100px;border:1px solid red;overflow:hidden;">
    <div class="test" style="margin-left:-6em">
    <a>
    測(cè)試用的文字
    <i class="fa fa-arrow-right"></i>
    </a>
    </div>
    </div>
    </div>
    <script>
    $("[data-toggle='tooltip']").tooltip();
    
    $("#test").on("mouseover",function(){
    var $this = $(this);
    var $thisTest = $this.find("div.test");
    $thisTest.css("position","relative");
    // $thisTest.stop();
    $thisTest.filter(':not(:animated)').animate({marginLeft:"0em"});
    })
    .on("mouseout",function(){
    var $this = $(this);
    var $thisTest = $this.find("div.test");
    $thisTest.css("position","relative");
    // $thisTest.stop();
    $thisTest.filter(':not(:animated)').animate({marginLeft:"-6em"});
    })
    //連續(xù)觸發(fā)動(dòng)畫bug
    //不允許動(dòng)畫累積;或是在新的動(dòng)畫開始前,先停止當(dāng)前正在進(jìn)行的動(dòng)畫
    </script>
    </body>
    </html>

    上面這份程式碼,stop()這個(gè)方法被我註解掉了,是我個(gè)人認(rèn)為最完美的解決方法,沒(méi)有被註解掉的,是我後來(lái)百度了一下後,別人提到的另一種解決方案,但我個(gè)人感覺(jué)不是特別完美,至於差別我在後面提。

    最開始,

    $thisTest.filter(':not(:animated)').animate({marginLeft:"0em"});
    $thisTest.filter(':not(:animated)').animate({marginLeft:"-6em"});

    這兩句程式碼,是沒(méi)有filter()函數(shù)的,也就是最開始碰到這個(gè)bug的時(shí)候的程式碼的樣子。

    這個(gè)bug產(chǎn)生原因就是事件在短時(shí)間內(nèi)(上一個(gè)動(dòng)畫未播放完),動(dòng)畫累積導(dǎo)致的(估計(jì)碰到這個(gè)問(wèn)題的,回過(guò)頭去看看程式碼都知道這個(gè)原因)。所以,解決的方法,有兩個(gè)。

    【filter】

    一個(gè)就是用filter過(guò)濾,在動(dòng)畫發(fā)生前,過(guò)濾掉正在進(jìn)行動(dòng)畫的元素,只讓上一個(gè)動(dòng)畫已經(jīng)結(jié)束的元素才能觸發(fā)新的事件。

    然後這就帶來(lái)一個(gè)新問(wèn)題了,當(dāng)我把滑鼠移至對(duì)應(yīng)的內(nèi)容上,mouseover事件觸發(fā),這個(gè)時(shí)候,在動(dòng)畫還未結(jié)束的時(shí)候,我再將滑鼠移除對(duì)應(yīng)內(nèi)容區(qū)域外, mouseleave事件觸發(fā),但因?yàn)樯弦粋€(gè)動(dòng)畫還未結(jié)束,所以即使觸發(fā)了該事件,但預(yù)期的函數(shù)並未執(zhí)行,此時(shí)預(yù)期中的「mouseleave事件觸發(fā),內(nèi)容隱藏」結(jié)果便無(wú)法做到了。

    當(dāng)然,如果操作者在mouseover事件觸發(fā)的動(dòng)畫結(jié)束前,滑鼠就一直停在對(duì)應(yīng)內(nèi)容上,這個(gè)方案並不會(huì)有影響。

    【stop】

    對(duì)於stop(),雖然知道這是大家都了解的,還是再搬一遍吧。

    //語(yǔ)法結(jié)構(gòu)
    $("#div").stop();//停止當(dāng)前動(dòng)畫,繼續(xù)下一個(gè)動(dòng)畫
    $("#div").stop(true);//清除元素的所有動(dòng)畫
    $("#div").stop(false, true);//讓當(dāng)前動(dòng)畫直接到達(dá)末狀態(tài) ,繼續(xù)下一個(gè)動(dòng)畫
    $("#div").stop(true, true);//清除元素的所有動(dòng)畫,讓當(dāng)前動(dòng)畫直接到達(dá)末狀態(tài)

    這個(gè)方案的思路,就是簡(jiǎn)單的:當(dāng)我mouseover的時(shí)候,觸發(fā)對(duì)應(yīng)的動(dòng)畫,但是在動(dòng)畫還未結(jié)束的時(shí)候,我卻要mouseleave,同時(shí)觸發(fā)mouseleave對(duì)應(yīng)的動(dòng)畫,這個(gè)時(shí)候我便需要停止對(duì)應(yīng)元素正在進(jìn)行的動(dòng)畫。然後,這個(gè)bug也就不存在了。

    最後,好吧,這篇隨筆好像也沒(méi)啥總結(jié)的,其實(shí)就是對(duì)animate、slide、fade動(dòng)畫函數(shù)的熟悉吧,同時(shí)再熟悉一下stop有參數(shù)無(wú)參數(shù)的區(qū)別(講真,剛開始沒(méi)想到用stop,過(guò)了一兩天后,偶然看到API的時(shí)候,看到了stop,才突然有了用stop解決這個(gè)bug的設(shè)想)。

    以上所述是腳本之家小編給大家分享有關(guān)jQuery中animate、slide、fade等動(dòng)畫的連續(xù)觸發(fā)、滯後反覆執(zhí)行的bug,希望對(duì)大家今後的工作學(xué)習(xí)有所幫助。

    本網(wǎng)站聲明
    本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費(fèi)脫衣圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費(fèi)的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強(qiáng)大的PHP整合開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級(jí)程式碼編輯軟體(SublimeText3)

    Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

    Java和JavaScript是不同的編程語(yǔ)言,各自適用於不同的應(yīng)用場(chǎng)景。 Java用於大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁(yè)開發(fā)。

    JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 Jun 19, 2025 am 12:40 AM

    JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

    如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

    JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫(kù);4.處理時(shí)區(qū)問(wèn)題建議使用支持時(shí)區(qū)的庫(kù),如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

    為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

    PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

    JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

    JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

    什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

    事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過(guò)addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助於精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

    JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

    javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

    Java和JavaScript有什麼區(qū)別? Java和JavaScript有什麼區(qū)別? Jun 17, 2025 am 09:17 AM

    Java和JavaScript是不同的編程語(yǔ)言。 1.Java是靜態(tài)類型、編譯型語(yǔ)言,適用於企業(yè)應(yīng)用和大型系統(tǒng)。 2.JavaScript是動(dòng)態(tài)類型、解釋型語(yǔ)言,主要用於網(wǎng)頁(yè)交互和前端開發(fā)。

    See all articles