仅执行一次jquery动画

时间:2012-07-27 15:34:07

标签: javascript jquery

我有以下功能:

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

切换div并向下滚动页面。问题是每次用户切换页面时再次向下滚动...我怎么能只在第一次点击时运行这个动画功能?

8 个答案:

答案 0 :(得分:11)

使用标志或设置数据属性以确保仅在第一次单击时才会出现滚动动画。

var flag=true;

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

我猜#div2仍应切换,但它不应该在每次点击时滚动?

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

使用.one函数绑定仅触发一次的事件。

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

答案 3 :(得分:0)

以下适用于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. */

也许你可以在制作动画时使用它作为参考。 ;)

答案 4 :(得分:-1)

您可以解除处理程序末尾的单击处理程序,以便它永远不会再次触发:

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

答案 5 :(得分:-1)

使用标志

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

答案 6 :(得分:-1)

您可以保存一个简单的&#34;令牌&#34;检查是否是第一次以这种方式触发点击:

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

这可以防止进一步点击

答案 7 :(得分:-1)

这应该这样做

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