2013-01-04 55 views
1

我在IE中滚动功能有问题。滚动功能IE错误

下面的代码http://jsfiddle.net/VdNQL/

这里的问题是,当你点击链接(顶部)它会去特别的地方,但它会经过短短窝棚之前的一次。很高兴在Firefox和Chrome中查看。我认为这个问题是jQuery。在这里我的jQuery。

 $(document).ready(function(){    
     $(window).scroll(function(){ 
      if ($(this).scrollTop() > 50) { 
       $('div').addClass("k"); 
      } else { 
       $('div').removeClass("k"); 
      } 
     }); 

    $("a").bind('click', function() { 
    var hash = $(this).attr("href"); 
    $('html, body').animate({ scrollTop: $(hash).position().top - 50 }, 1000); 
    }); 

    }); 

感谢您的建议。

+2

你能澄清你的意思是什么“但在此之前它只是窝棚它去后的一个时间”,当你点击链接的页面是跳舞,然后动画功能变得活跃移动是没有意义的,我 – freefaller

+0

在相应的ID上。请访问ie中的链接。你可以理解我喜欢说的话。 – Selvamani

回答

4

.preventDefault()

$("a").bind('click', function(ev) { 
    ev.preventDefault(); 

    var hash = $(this).attr("href"); 
    $('html, body').animate({ scrollTop: $(hash).position().top - 50 }, 1000); 
}); 

http://jsfiddle.net/VdNQL/2/

+0

是的,谢谢。是工作。你能告诉我为什么我在代码中给'ev.preventDefault();'。这个功能是什么,以及我们为什么要在这里使用。其实它在这里做什么? – Selvamani

+1

点击“Scroll”等链接时,默认的浏览器行为将跳转到引用的锚点/标识“one”。这就是IE在动画真正开始之前所做的。使用'.preventDefault()'我们可以阻止这种情况的发生。 – Andreas

+0

了一下preventDefault'如何'工作的更多信息:https://developer.mozilla.org/en/docs/DOM/event.preventDefault –

1

那是因为您的href点击也试图在同一时间来工作就停止链接元素的默认操作。防止默认的href行为。这引起了混蛋/抖动行为。

$("a").bind('click', function(event) { 
    event.preventDefault(); 
    var hash = $(this).attr("href"); 
    $('html, body').animate({ scrollTop: $(hash).position().top - 50 }, 1000); 
}); 
+0

呀谢谢。是工作。你能告诉我为什么我在代码中给'ev.preventDefault();'。这个功能是什么,以及我们为什么要在这里使用。 – Selvamani

+0

@Selva它基本上说不要执行事件的默认动作。检查此jQuery Api的更多详细信息[preventDefault](http://api.jquery.com/event.preventDefault/) – ryadavilli

-1

在你的代码添加的类ķ到div当Windows scrollTop的是大于50.类k您正在设置顶部1px的。所以你的脚本将顶部设置为1px,然后开始动画。我希望这是IE浏览器的原因。

+0

没有错误的答案。 – Selvamani