Firstly, thank you in advance for supporting my question.
I believe the outcome will be straight-forward; but I have a WordPress button with id " sidebar-toggle " and its represented as an icon with css. When this button is clicked, a sidebar appears, and when clicked again (to close) the sidebar hides.
However, this is my index.php page which shows latest posts. So when the sidebar appears, it appears all the way down the page, underneath the latest posts.
How would you best ultilise jQuery to successfully scroll down to the sidebar div when the button is clicked?
CSS
<button id="sidebar-toggle" class="sidebar-toggle"></button>
HTML
<div id="sidebar" class="sidebar">
<div id="sidebar-inner" class="sidebar-inner">
// all inner content e.g. text is here
</div>
</div>
jQuery
jQuery(document).ready(function() {
jQuery("#sidebar-toggle").live("click", function(event){
jQuery('html,body').animate({ scrollTop:$('#sidebar').offset().top});
// the sidebar doesn't appear until clicked - problem when scrolling?
});
});
EDITED JQUERY
jQuery(function() {
jQuery("#sidebar-toggle").on( "click", function() { //Click
if (jQuery("#sidebar").is(":visible")) { //Check to see if element is visible then scroll to it
jQuery('html,body').animate({ //animate the scroll
scrollTop: $('#sidebar').offset().top
}, "slow")
}
});
return false; //This works similarly to event.preventDefault(); as it stops the default link behavior
});
});
I have created a simle example of how it should work. Hope it will help you :)
$(function() { $( "#sidebar-toggle" ).on( "click", function() { //Click $( "#sidebar" ).slideToggle( "slow", function(){ if ($(this).is(":visible")) { //Check to see if element is visible then scroll to it $('html,body').animate({ //animate the scroll scrollTop: $(this).offset().top }, "slow") } }); return false; //This works similarly to event.preventDefault(); as it stops the default link behavior }); });
.sidebar{ margin-top:500px; height:500px; width:200px; background:red;display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="sidebar-toggle" class="sidebar-toggle">toggler</button> <div id="sidebar" class="sidebar"> <div id="sidebar-inner" class="sidebar-inner"> // all inner content eg text is here </div> </div>
To check only if statement:
jQuery(function() {
if (jQuery('#sidebar').is(":visible")) { //Check to see if element is visible then scroll to it
jQuery('html,body').animate({ //animate the scroll
scrollTop: jQuery('#sidebar').offset().top
}, "slow")
}
)};
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.