1

我有这个代码检查顶部偏移量并相应地更改菜单的类。 它完美的工作,除了IE7和IE8,其中类没有改变。 这是代码:addClass和removeClass在IE中不工作

$(document).scroll(function(){ 
if($(document).scrollTop() >= 800) { 
$('#menu').removeClass('default').addClass('fixed'); 
} 
else{$('#menu').removeClass('fixed').addClass('default');} 
}); 

如果有人想看看,链接http://www.vivianzoric.com/esiq/index.html

附:不要问我为什么它在IE7中分崩离析,我才开始这个昨天:)

+0

'不要问我为什么在IE7中崩溃 - 我知道。因为IE只是... IE – 2012-01-07 00:27:42

+0

你知道是否调用了'.scroll()'事件吗? addClass()和removeClass()几乎不可能工作(因为他们所做的全部工作都是读取和设置'.className'),所以很可能事件不起作用,scrollTop()没有做你期望的事情,或者选择者没有做你期望的事情。您可能需要缩小哪些代码行不正确。 – jfriend00 2012-01-07 00:28:17

+0

也可能你应该在'document.body'以外的东西上使用'.scrollTop()'。 – jfriend00 2012-01-07 00:30:07

回答

3

尝试使用,window而不是document

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

但是要$(document).scrollTop(function()

而只是让你知道,.scrollTop并在IE浏览器(IE8反正)工作

UPDATE

继承人我现在在我的网站的一个使用完全相同的代码

$(window).scroll(function(){ 
    if($(document).scrollTop() >= 800)){ 
     //my code 
    }else{ 
     //my code 
    } 

}); 
+0

谢谢,我会try.You可以检查我提供的链接,所有浏览器,除IE7和8 – suludi 2012-01-07 00:36:05

+0

好,它的工作。请你解释为什么这在IE8中工作,文件不? – suludi 2012-01-07 00:46:07

+0

我不是100%,但我会假设IE无法处理文档上的'scroll'事件。因为'window'覆盖了所有东西,它总是会被调用。我再次不是100% – 2012-01-07 00:48:12

-1

问题上的工作中scrollTop()并不在IE

正常工作见http://api.jquery.com/scrollTop/

+1

只需链接到'scrollTop()'文档是不够的...请解释这个答案。 – Sparky 2012-01-07 00:32:05

+0

'scrolltop' does not work in IE8 so so would think 9,not so about about 7 – 2012-01-07 00:35:25

+0

RTFM,guys;) 如果你不懒惰并完全阅读文档,你会看到非常有用的评论。 例如:http://api.jquery.com/scrollTop/#comment-133682921 – 2012-01-08 20:55:50