2011-11-29 93 views
0

我在下面使用jQuery在页面上显示div时显示一个div,点击时会慢慢将页面滚动回页面顶部,它适用于Chrome浏览器和Firefox使用IE 8时,它只是立即去顶部,而不是一个较慢的向上滚动如何使用jQuery在IE中滚动到页面的顶部

任何人都可以告诉我如何克服这一点?

// BACK TO TOP 
jQuery(window).scroll(function() { 
    if (jQuery(window).scrollTop() > 0) $('#jump-link').show(); 
    else 
    $('#jump-link').hide(); 
}); 

jQuery('#jump-link').click(function() { 
    jQuery('html, body').stop().animate({ 
     scrollTop: 0 
    }, 900); 
    return false; 
}); 
+0

这可能纯粹是因为IE是有点扯淡。我已经看到,与其他浏览器相比,即使在相当强大的系统上,jQuery也可以进行动画处理(尤其是同时处理多个动画)。据我所知滚动动画工作在IE8上 - 它可能需要很长的时间来渲染中间阶段,所以看起来好像没有任何动画。 – jammypeach

+0

你可以尝试改变时间使其在10秒内动画,看看它是否仍然跳动。 – jammypeach

回答

1
$.fn.scrollView = function() { 
return this.each(function() { 
    $('html, body').animate({ 
     scrollTop: $(this).offset().top 
    }, 1000); 
}); 
}; 

,并使用类似的

$('html').scrollView(); 

可以拨弄here(只是滚动页面的底部,然后单击最后一个列表项)

+0

谢谢,我看到你使用了这个$ .fn.scrollView你能解释一下这是什么或者我可以在哪里找到关于这个的更多信息? – JasonDavis

+0

我发现在http://stackoverflow.com/questions/1586341/how-can-i-scroll-to-a-specific-location-on-the-page-using-jquery/#1586379页面上并使用过在很多项目中,通过$ .fn.scrollView的方式,你可以添加/扩展你的自定义jquery函数。 – Alper

+0

即使你可以在这里阅读更多:http://ryanflorence.com/use-your-fn-jquery-namespace/ – Alper

1

这是因为onscroll处理程序是的多次呼吁。在滚动到顶部之前删除onscroll处理程序,然后将其添加回来。 ID EST,以替换第二块:

jQuery('#jump-link').click(function() { 
    jQuery(window).unbind('scroll'); 
    $('#jump-link').hide(); 
    jQuery('html, body').stop().animate({ 
     scrollTop: 0 
    }, 900, function() { 
     jQuery(window).scroll(function() { ... }); 

    }); 
    return false; 
}); 

请注意,您可以通过命名滚动功能清理代码,并在解除绑定及重新绑定功能,通过名称来引用它。

(我假设你已经检查的$.fx.off的更加明显的可能性是真实的,对不对?)