2013-02-27 33 views
5

Điều tôi đang cố gắng làm là hủy liên kết một hàm cụ thể, sau khi nó đã chạy một lần. Trong đoạn mã dưới đây là cuộn cửa sổ.Hủy liên kết một hàm cụ thể jQuery

$(window).scroll(function(){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("scroll");}); 
    } 
}); 

Về cơ bản, khi #div mờ dần, tôi muốn cuộnTop (0). Sau khi cuộn lên trên, tôi cần toàn bộ hàm này để hủy liên kết.

Có cách nào để đặt chức năng này cho một tên cụ thể không, sau đó gọi lại tên đó? Bởi vì mã này hoạt động, chỉ có nó loại bỏ tất cả các chức năng cuộn. (Mà ofcourse tôi không muốn) Tôi đã suy nghĩ một cái gì đó giống như vậy:

$(window).scroll(function(FUNCTION NAME HERE){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("FUNCTION NAME HERE");}); 
    } 
}); 

Trả lời

23

Jefferson, một cái gì đó giống như ..

$(window).bind("scroll.myScroll", function(){ 
    // stuff 
    }) 

ngay bây giờ, hủy liên kết cuộn - Tôi có mã định danh duy nhất trong trường hợp bạn có các sự kiện cuộn cửa sổ khác, bạn không muốn gây rối.

$(window).unbind('.myScroll'); 
+0

Điều đó đã sửa nó! Cảm ơn ngài rất nhiều. – Jefferson

+0

tuyệt vời! Mừng vì tôi có thể giúp. –

+0

Có posibility để unbind một chức năng tạo ra như thế này: 'jQuery.fn.scrollVal = chức năng (nhảy, loại) {...}'? Trở thành sth như thế này không hoạt động: '$ ('# ReleaseVersion'). Unbind ('. ScrollVal');' – krypru

0

bạn có thể sử dụng jquery.unbind chức năng để unbind bất kỳ sự kiện đặc biệt cho các phần tử

+0

Tôi đã cố gắng hủy liên kết scrollTop, tính năng này không hoạt động. Nó tiếp tục kích hoạt chức năng. – Jefferson