gpt4 book ai didi

javascript - jQuery 动画滚动无需 $.browser 并且不会触发两次

转载 作者:行者123 更新时间:2023-11-28 19:17:12 25 4
gpt4 key购买 nike

我发现了许多关于$('html, body').animate();的交叉弓箭行为的问题,但由于某种原因我找不到这个问题的答案:

我想(最终)删除 $.browser ,但同时不希望再次触发滚动事件两次,如果选择器是$('html, body),则在某些浏览器中会发生这种情况。

// animte page scrolling
pageScroll : function( scrollTo, speed, callback ) {

var rootElem;

scrollTo = scrollTo || 0;
speed = speed || 800;

if ( $.browser.webkit ) {
rootElem = $('body');
} else {
rootElem = $('html');
}

rootElem
.stop()
.animate(
{
scrollTop: scrollTo
}, speed, callback
);
}

最佳答案

我已经研究这个问题很长一段时间了,除了检查文档准备就绪之外,还没有找到真正的解决方案:

http://codepen.io/anon/pen/yyddER?editors=011

var mainelement;

$('html, body').animate({scrollTop: 1}, 1, function() {

if ($('html').scrollTop()) mainelement = $('html'); // FF and IE
if ($('body').scrollTop()) mainelement = $('body'); // Chrome, Safari and Opera
mainelement.scrollTop(0);
});

假设这里的内容足够高,可以创建滚动条...

在主要浏览器上进行了测试,运行顺利。

编辑 - 如果浏览器使用 <html>,则确保仅执行一次向后滚动页面的触发器。作为溢出的主要元素:

var mainelement, tested = false;

$('html, body').animate({scrollTop: 1}, 1, function() {

if ($('html').scrollTop()) mainelement = $('html');
else if ($('body').scrollTop()) mainelement = $('body');

if (!tested) {
tested = true;
mainelement.scrollTop(0);
}
});

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

后来也想出了这种方法(这似乎是最有效的):

http://codepen.io/anon/pen/NPQNEr?editors=001

var mainelement;

$(window).scrollTop(1);
if ($('html').scrollTop()) mainelement = $('html');
else if ($('body').scrollTop()) mainelement = $('body');
mainelement.scrollTop(0);

关于javascript - jQuery 动画滚动无需 $.browser 并且不会触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com