I have quite a long page with a lot of class elements in it. Also 2 buttons: next
and prev
.
This script for scrolling to the next element works well for me:
$('.button').click(function() {
var target;
$("p").each(function(i, element) {
target = $(element).offset().top;
if (target - 10 > $(document).scrollTop()) {
return false; // break
}
});
$("html, body").animate({
scrollTop: target
}, 700);
});
Can somebody help me with a prev
solution?
This should be worked:
$(document).ready(function(){
$('.button.next').click(function() {
var target;
$("p").each(function(i, element) {
target = $(element).offset().top;
if (target - 10 > $(document).scrollTop()) {
return false; // break
}
});
$("html, body").animate({
scrollTop: target
}, 700);
});
$('.button.prev').click(function() {
var target;
$("p").each(function(i, element) {
current = $(element).offset().top;
if (current + 10 > $(document).scrollTop()) {
if (i == 0){
target = 0;
}
else {
target = $("p").eq(i-1).offset().top
}
return false; // break
}
});
$("html, body").animate({
scrollTop: target
}, 700);
});
});
p {
height:600px;
}
.button {
position:fixed;
cursor:pointer;
top:5%;
}
.next {
right:5%;
}
.prev {
right:15%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button prev">PREV</div>
<div class="button next">NEXT</div>
<h1>Welcome to My Homepage</h1>
<p>This is the first paragraph.</p>
<p>This is the second paragraph.</p>
<p>This is the third paragraph.</p>
<p>This is the last paragraph.</p>