2012-01-15 94 views
1

所以我有一个div,当你在页面底部滚动时滑落。在那个div中,我有一个“X”锚,它再次滑动它(这是在jQuery中)。但是,如果我滚动,div再次滑落(自然)。所以我首先要X,使“#topDiv”向上滑动,然后忽略使其滑动的函数。忽略功能?

全码:

$("#topDiv").hide(); 

    $(window).scroll(function() { 
     if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) { 
      $("#topDiv").slideDown(); 
     } 


     if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) { 

      $("#topDiv").slideUp(); 
     } 
     $("#closeTop").click(function() { 
      $("#topDiv").slideUp(); 
      return false; 
     }); 
    }); 

Demo Pagehttp://tutorials.underbakke.net/js/function/

回答

-1

试试这个:

$("#topDiv").hide(); 

$(window).addEventListener('scroll', function(event) { 
    if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) { 
     $("#topDiv").slideDown(); 
    } 


    if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) { 
     $("#topDiv").slideUp(); 
    } 

    $("#closeTop").click(function() { 
     $("#topDiv").slideUp(); 
     $(window).removeEventListener('scroll',arguments.callee,false); 
    }); 
} 
3

你可以使用开/关方法 “X” 后取消绑定了slideDown是点击

$("#topDiv").hide(); 

$(window).on('scroll', showTopDiv); 

function showTopDiv() { 
     if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) { 
      $("#topDiv").slideDown(); 
     } 
} 

$(window).on('scroll', function() { 
     if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) { 
      $("#topDiv").slideUp(); 
     } 
}); 

$("#closeTop").click(function() { 
     $("#topDiv").slideUp(); 
     $(window).off('scroll', showTopDiv); 
     return false; 
}); 

此外,在您的滑动功能中,将$("#topDiv").is(':visible')添加到if语句将确保它不会被执行。

是否真的需要绑定每个滚动的点击功能?