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);
});
});