2012-07-11 101 views
0

我正在調用滾動功能,當我的目的服務我解除了綁定滾動。但在菜單選項卡的點擊我想再次綁定滾動。我們可以重新綁定滾動後綁定它與刷新頁面。這裏是我的代碼。因爲他們不提供一個處理函數綁定綁定/解除綁定滾動

var currentPage = 1; 
var xhr = null; 
var flag = 0; 
(window).bind('scroll'); 

$(document).ready(function() 
{ 
$('#gallery').bind("click",function() 
{ 
flag = 0; 
currentPage = 1; 
alert(currentPage); 
scroll() 
}); 

}); 

function scroll(){ $(window).bind('scroll');} 

function refresh(){flag = 1; alert("flag");} 

function checkScroll() { 


if (flag==1){ $(window).unbind('scroll');} 




if(nearBottomOfPage() == 0) 
{ 

    currentPage ++; 

    xhr = $.ajax(
    { 
     url : '/ideabank?page=' + currentPage, 
     beforeSend: function() { 
       $('#loading').show() 
      }, 
      complete: function(){ 
       $('#loading').hide() 
      }, 
     success : function(){} 
     }); 
    } 

} 


function nearBottomOfPage() { 
    return scrollDistanceFromBottom(); 
} 

function scrollDistanceFromBottom(argument) { 
return $(document).height() - ($(window).height() + $(window).scrollTop()); 
} 

    $(window).bind('scroll',function(){ 
    checkScroll(); 
}); 
+0

可能重複的[無法重新綁定滾動事件?](http://stackoverflow.com/questions/11122010/can-not-rebind-scroll-event) – 2012-07-11 06:19:56

回答

0

您可以重新綁定在任何時候的滾動事件的處理程序,但有兩個出你的三個電話到.bind('scroll')是不正確的。這些語句:

$(window).bind('scroll'); 

function scroll(){ $(window).bind('scroll');} 

...需要是這樣的:

$(window).bind('scroll',function(){ 
    checkScroll(); 
}); 
// OR you don't actually need the anonymous function, 
// you can bind checkScroll directly: 
$(window).bind('scroll',checkScroll); 

// AND 
function scroll(){ $(window).bind('scroll',checkScroll);} 

(另請注意,在第4行你就錯過從(window).bind('scroll')開始時$,但我認爲這只是在問題中的錯字不在您的真實代碼中。)

+0

我不能在畫廊的點擊事件上給予回報。如果我這樣做,它不會窩rk正確。 我試過在scroll()函數內返回false,但仍然存在我的問題。 – 2012-07-11 06:29:09

+0

我沒有說任何關於返回false的信息,那是現在被刪除的其他答案。 – nnnnnn 2012-07-11 06:32:17

+0

你好,非常感謝大家的幫助,修改了你的修改,並刪除了在代碼底部的checkScroll()調用,它的工作正常。 – 2012-07-11 06:40:23