当.animate()正在运行时,jQuery unbind按钮

时间:2011-11-18 09:43:38

标签: jquery

我正在尝试在动画运行时使按钮无法使用。我用按钮编写了一个简单的滚动,但如果用户反复点击按钮,动画就不会停止,所以滚动会反复重复。我点击了unbind时尝试在元素上使用bind 再次,当动画完成但它似乎不起作用。这是我的代码:

$(".go_up").bind('click',function(){
    var $this = $(this);
    var $content_page = $this.siblings('.componentin').children('.item-page');
    var $content_math = $content_page.height();
    var $content_height = ($content_math)*(-1);
    var $content_margin = $content_page.css("margin-top");

    if (($content_margin) <= '0') {
        $this.unbind("click");
        $content_page.animate({ marginTop: "+=100px" }, "slow", function(){
            $this.bind("click");
        });
    }
});

以下是示例:www.erincfirtina.com/bar/

[固定]

$(".go_up").bind('click',function(){
                  var $this = $(this);
                  var $content_page = $this.siblings('.componentin').children('.item-page');
                  var $content_math = $content_page.height();
                  var $content_height = ($content_math)*(-1);
                  var $content_margin = $content_page.css("margin-top");
                  if ((($content_margin) <= '0') && (!$content_page.is(":animated"))){
                  $content_page.animate({marginTop: "+=100px"}, "slow");
                  }
              });

添加.is(":animated")并顺利运作

2 个答案:

答案 0 :(得分:0)

试试这个:

//replace this: $this.bind("click");

with this:
$this.unbind('toggle').unbind('click');

希望有所帮助

答案 1 :(得分:0)

你的第二次绑定调用没有给函数调用,所以这是一个问题

顺便说一句,有一个很棒的插件,你想要做的就是accordion,它在jquery ui库中也很有用。很酷的是,还确保始终只打开一个标签(如您给出的示例)