Last active
April 1, 2020 19:50
-
-
Save raddevon/8958486 to your computer and use it in GitHub Desktop.
Open a Bootstrap accordion control if its anchor is target on page load
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Opens accordion automatically if an accordion target is accessed from another page | |
// Assumes the accordion-group is the target linked to | |
function openAnchorAccordion() { | |
if (window.location.hash) { | |
var $target = $('body').find(window.location.hash); | |
if ($target.hasClass('accordion-group')) { | |
var $targetAccordion = $target.find('.collapse'); | |
$targetAccordion.collapse('show'); | |
} | |
} | |
} | |
openAnchorAccordion(); | |
$("body").on("click", "a", openHashAccordion); |
Thanks this is just what I needed
To make this work with Bootstrap 4 you need to change this line from:
if (jQuerytarget.hasClass('panel-collapse')) {
To:
if (jQuerytarget.hasClass('collapse')) {
Then it works. It would be good if it could scroll to the accordion too but I have not yet worked that part out.
It's not working for me. Can you please post the complete code with javascript.
I am using this code for bootstrap 4. I just want to open that accordion tab on load. Placed it in window.onload
if (window.location.hash) {
var jQuerytarget = jQuery('body').find(window.location.hash);
if (jQuerytarget.hasClass('collapse')) {
var jQuerytargetAccordion = jQuerytarget.find('.collapse');
jQuerytarget.collapse('show');
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
SabreCat is correct. I found putting the following code in my footer worked for me (also, make sure bootstrap.js is loaded before this, or at least don't
defer
the loading of that script. You should probablyenqueue
this for good practice.` <script>
// Opens accordion automatically if an accordion target is accessed from another page
// Assumes the accordion-group is the target linked to
function openAnchorAccordion() {
if (window.location.hash) {
var jQuerytarget = jQuery('body').find(window.location.hash);
//console.log( jQuerytarget );
if (jQuerytarget.hasClass('panel-collapse')) {
var jQuerytargetAccordion = jQuerytarget.find('.collapse');
console.log( jQuerytargetAccordion );
jQuerytarget.collapse('show');
}
}
}