簡體   English   中英

僅執行一次jquery動畫

[英]Execute jquery animate only one time

我有以下功能:

$('.link1').click(function(){
    $("#div2").slideUp(function(){$("#div1").slideToggle();});
    $('html, body').animate({scrollTop: '600px'}, 800);
});

它切換div並向下滾動頁面。 問題是,每次用戶切換頁面再次向下滾動時...我怎么能只在第一次點擊時運行這個動畫功能?

使用標志或設置數據屬性以確保滾動動畫僅在第一次單擊時發生。

var flag=true;

$('.link1').click(function(){
    $("#div2").slideUp(function(){$("#div1").slideToggle();});
    if (flag) {
        $('html, body').animate({scrollTop: '600px'}, 800);
        flag = false;
    }
});

我猜#div2應該仍然切換,但它不應該在每次點擊時滾動?

jQuery .one() http://api.jquery.com/one/

$('.link1').one( 'click', function(){
    $("#div2").slideUp(function(){$("#div1").slideToggle();});
    $('html, body').animate({scrollTop: '600px'}, 800);
});

使用.one函數綁定僅觸發一次的事件。

$('.link1').one('click', function(){
    $("#div2").slideUp(function(){$("#div1").slideToggle();});
    $('html, body').animate({scrollTop: '600px'}, 800);
});

以下適用於JQuery。

使用的CSS:

.cpos {
    position: relative;
    top: -1.65em;
    left: 1.8em;
}

使用的JQuery:

var p=null; /* Initialize variable p. */
p=$("b").detach(); /* Detach every possible <b>b</b>-tags. */
var p=$("<b>Console loaded!</b>").addClass("cpos"); /* Do anything, like adding class. */
p.appendTo("#container"); /* Append new data to the anchor container. */

也許您可以在動畫時使用它作為參考。 ;)

您可以解除處理程序末尾的單擊處理程序,以便它永遠不會再次觸發:

$('.link1').off('click');

使用旗幟

var noRun = 0
$('.link1').click(function(){
    if(noRun==1) {
      return
     }
     noRun = 1  
    $("#div2").slideUp(function(){$("#div1").slideToggle();});
    $('html, body').animate({scrollTop: '600px'}, 800);
});

您可以保存一個簡單的“令牌”來檢查是否是第一次以這種方式觸發點擊:

$('.link1').click(function(){ 
    if(!$(this).data('isFirstTime')) {
        $("#div2").slideUp(function(){$("#div1").slideToggle();}); 
        $('html, body').animate({scrollTop: '600px'}, 800); 
        $(this).data('isFirstTime', true);
    }
}); 

這可以防止進一步點擊

這應該做到這一點

(function(){
    var first=true;
    $('.link1').click(function(){
        if (first){
            first=false;
            $("#div2").slideUp(function(){$("#div1").slideToggle();});
            $('html, body').animate({scrollTop: '600px'}, 800);
        }
    });
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM