2012-02-27 82 views
0

这甚至是假设通过向下添加类来移动div。但它提前? 。标题没有打到顶部,它已经在旅途中!?jquery切换类不能完全工作

$(document).ready(function(){ 
    $(window).scroll(function() { 
    var moveit = $('.title'), //the titles are to move 
     targetScroll = $('.title').position().top, //when .title is at top 
     currentScroll = $(document.body).scrollTop(); 

    moveit.toggleClass('down', currentScroll >= targetScroll); 
    }); 
}); 

#box #left ul li:hover .down { 
    top: 500px; 
} 

.down包含的方式提前。

我在做什么错......它盯着我脸上不是吗?

+0

你的代码的工作:http://jsfiddle.net/RVbCq/就非常有可能的CSS问题更多。 – 2012-02-27 22:23:26

回答

0

这是因为jQuery使用它自己的队列来处理动画。它只是走到下一行。如果你想知道什么时候滚动完成,最好使用scrollTo插件:http://flesler.blogspot.com/2007/10/jqueryscrollto.html

这会让你输入一个在滚动完成时执行的函数。在散列对象中使用onAfter参数。

UPDATE

我希望我找到了。您正在对照document.body进行检查。滚动值始终为0。所以请检查:$(document).scrollTop()

http://jsfiddle.net/RVbCq/1/

+0

通过您的代码仔细阅读。我不知道我的理由是否正确。你的代码对于所有的逗号和预定义的查询都有点麻烦。但我希望这个插件能为你做好工作,所以我在这里留下了答案。 – Marnix 2012-02-27 22:28:19

+0

我将它从位置改变为偏移量,它可以工作。虽然我不太清楚为什么。 – shamguy4 2012-02-27 23:10:51