【发布时间】:2012-12-02 14:12:29
【问题描述】:
http://jsfiddle.net/CbL7W/ 滚动事件行为示例。
我的这个脚本在 Chrome 和 Firefox 中都能正常工作。
var stickyNavigationOffsetTop = $('.top-nav').offset().top;
var stickyNavigation = function () {
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavigationOffsetTop) {
$('.top-nav').css({ 'position': 'fixed', 'top': 0, 'left': 0, 'opacity': .8 });
} else {
$('.top-nav').css({ 'position': 'relative', 'opacity': 1 });
}
};
stickyNavigation();
$(window).scroll(function () {
stickyNavigation();
});
但是 Internet Explorer 有一个小问题:
在同一页面上,我有那个脚本,我有一个带有隐藏 div 的脚本的链接,当这种情况发生时,有时页面会完全滚动回页面顶部,但 IE 在发生这种情况时不会触发$(window).scroll。
页面返回顶部时的问题截图。
【问题讨论】:
-
我认为当页面变短时不应该发生任何滚动。您可以在删除 div 之前尝试更改 scrolltop。
-
但是为什么 Chrome 和 Firefox 会触发滚动事件?那个 div 的东西是一个可折叠的部分,实际上并没有删除它,而是隐藏它。
-
在我的情况下(OP 可能不同)Chrome 和 Firefox 触发滚动事件,因为隐藏 div 会导致滚动条从窗口中移除。这意味着默认情况下滚动位置已更改回0,我说这构成了滚动事件。
-
没错!但 IE 的人只需要与众不同:P
标签: jquery internet-explorer scroll