Javascript 取消绑定元素并在动画停止后添加回

Javascript 取消绑定元素并在动画停止后添加回,javascript,jquery,Javascript,Jquery,我正在尝试解除绑定一个元素,然后在页面滚动动画完成后将其绑定回去: $(".trigger").click(function(){ $(".class1 a, .class2 a").unbind(); $('html, body').stop().animate({scrollTop: $('#container').offset().top}, 1000); $(".class1 a, .class2 a").bind(); }); .class1 a和.class2 a永远不

我正在尝试
解除绑定
一个元素,然后
在页面滚动动画完成后将其绑定回去:

$(".trigger").click(function(){
  $(".class1 a, .class2 a").unbind();
  $('html, body').stop().animate({scrollTop: $('#container').offset().top}, 1000);
  $(".class1 a, .class2 a").bind();
});

.class1 a
.class2 a
永远不会被绑定回去,但是?

当您在解除绑定后绑定事件时,它没有
以前处理程序的信息。

因此,每次绑定事件时都需要分配处理程序

$(".class1 a, .class2 a").bind(handler);

也可以使用
.on()/.off()
而不是
.bind()/.unbind()
,因为前者已被后者取代

 $(".trigger").on('click', function(){
      $(".class1 a, .class2 a").off('click');
      $('html, body').stop()
                     .animate({scrollTop: $('#container')
                     .offset().top}, 1000);
      $(".class1 a, .class2 a").on('click' , handler);
    });

    function handler(e){
       alert('Hey !!');
    }

如果要在动画之后绑定回事件处理程序,则必须使用回调函数。此外,还必须传递事件类型和回调以重新绑定处理程序

$(".trigger").click(function(){
  $(".class1 a, .class2 a").unbind();
  $('html, body').stop().animate({scrollTop: $('#container').offset().top}, 1000, function(){
      $(".class1 a, .class2 a").bind('sometype', somefunction);          
  });
});

你所说的
sometype
somefunction
是什么意思?
bind()
什么?它无法神奇地知道你想要添加什么,你需要告诉它!
$(".trigger").click(function(){
  $(".class1 a, .class2 a").unbind();
  $('html, body').stop().animate({scrollTop: $('#container').offset().top}, 1000, function(){
      $(".class1 a, .class2 a").bind('sometype', somefunction);          
  });
});