问题
How can I use the scrolltop without an animation
This code works:
var offTop = $('#box').offset().top;
offTop = offTop-43;
$('#mainCt').animate({scrollTop: '+=' + offTop + 'px'}, 400);
And here are my (not working solutions):
$("#mainCt").scrollTop('+=' + offTop + 'px'); // doesn't work
$("#mainCt").scrollTop('+='+offTop); // doesn't work
hhh = setTimeout(' $("#mainCt").scrollTop('+offTop+');',800); // doesn't work
DEMO
http://jsfiddle.net/DNNFF/9/
回答1:
maybe if you don't want an animation or anything fancy just use an anchor
<a name="top"></a>
Place it where you need to scroll
and in your function where you are calling use
document.location.href="#top";
You could also create a function to append the anchor before the element, do the document.location
thing and later remove that anchor.
http://jsfiddle.net/fSrxr/1/
回答2:
Try this:
var offTop = $('#box').offset().top - 43;
$('#mainCt').scrollTop(offTop);
The scrollTop
property accepts just an integer, no suffixes or units required.
回答3:
Skip jQuery. Just use JavaScript:
window.scroll(0, 0);
回答4:
http://api.jquery.com/scrollTop/
$(window).scrollTop(offTop)
回答5:
Why not use it with less duration. I fiddled it and it had no animation. SInce there will be no time to see the animation, there will be no animation at all.
var offTop = $('#box').offset().top;
offTop = offTop-43;
$('#mainCt').animate({scrollTop: '+=' + offTop + 'px'}, 50); //50 added here as duartion
回答6:
Can't you play with the duration ?
var offTop = $('#box').offset().top;
offTop = offTop-43;
$('#mainCt').delay('800').animate({scrollTop: '+=' + offTop + 'px'}, 1);
回答7:
var offTop = $('#box').offset().top;
$(window).scrollTop(parseInt(offTop))
来源:https://stackoverflow.com/questions/10143706/jquery-scrolltop-without-animation