2012-12-12 53 views
0

我想unbind的元素之後,一個頁面滾動的動畫,然後bind它回來後完成:解除綁定的元素,並添加回動畫停止

$(".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永遠不會綁定回來,但是?

+0

'bind()'什麼?它不知道你想要添加什麼,你需要告訴它! – epascarello

回答

1

如果你要綁定這個動畫後,事件處理程序你必須使用回調函數。你還必須通過事件類型和回調重新綁定處理程序

$(".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);   
    }); 
}); 
+0

'sometype'和'somefunction'是什麼意思? – Yahreen

+0

@Yahreen在這裏看到http://api.jquery.com/bind/ – Musa

0

當你bind解除綁定後,它沒有任何的previous handler.

信息的事件所以,你需要分配處理器every time you bind the event

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

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

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

還可以使用.on() /.off()代替.bind()/.unbind()因爲前者已經被後來superseeded ..

$(".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 !!'); 
    } 
相關問題