2012-07-11 96 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