2011-09-06 101 views
0

大家好! 我想显示一个div当用户滚动过另一个div,并在用户到达后面的div的开始时再次隐藏它。 假设我们有两个ID为#1和#2的div。现在,当用户滚动到#1的开头时,显示div#2。当用户再次回到#1时,div#2被隐藏。我怎样才能做到这一点?jQuery滚动问题

我用的是这样的:

jQuery(window).scroll(function(){ 
     y = jQuery(window).scrollTop(); 
     if(y>0){ 
      jQuery("#2").slideDown(); 
     } 
     if(y==0){ 
      jQuery("#2").slideUp(); 
     } 
    }); 

其完美工作了滚动窗口上。但是这不起作用:

jQuery(window).scroll(function(){ 
     y = jQuery("#1").scrollTop(); 
     if(y>0){ 
      jQuery("#2").slideDown(); 
     } 
     if(y==0){ 
      jQuery("#2").slideUp(); 
     } 
    }); 

我做错了吗?非常感谢。

+2

你有一个语法错误,Y =的jQuery( “#1).scrollTop();应为y =的jQuery(” #1" )scrollTop的(); – VNO

+0

@Vibhu,谢谢。更正。 – abhisek

回答

1

想一下scrollTop是div#1的内容。你说,如果y > 0。除非div1本身是可滚动的,否则它始终为零。你真正想要的是窗口是否低于div1。因此,对于我们使用

//top of window is at 
jQuery(window).scrollTop(); 

//top of div1 is at (relative to window) 
jQuery('#1').offset().top; 

//your code should look like this instead 
jQuery(window).scroll(function(){ 
    y = jQuery(window).scrollTop(); 
    if(y>jQuery('#1'.offset().top)){ 
     jQuery("#2").slideDown(); 
    } 
    else{ 
     jQuery("#2").slideUp(); 
    } 
}); 
+0

我编辑了我的答案。忘记纠正你的if语句的后半部分。 – mrtsherman

+0

Thanks!It works。:-) – abhisek

+0

不客气! – mrtsherman