Ich bin ziemlich neu in Web-Entwicklung. Ich habe mehrere Tage daran gearbeitet (peinlich) und recherchiert alles, was mir einfällt.Warum wird Jquery .show() den Anker-DIV nicht innerhalb der Bootstrap-Akkordeon-Einblendung anzeigen?
Ich benutze Rails 5, Bootstrap 3 und jquery 2.1.3.
Ich habe ein Bootstrap Akkordeon. Innerhalb der verschiedenen Collapse-Content-DIVs möchte ich Links zu Inhalten, die sich im selben Akkordeon befinden, aber einem anderen Collapse-Panel.
Im aktuellen Zusammenbruch Panel habe ich einen Link wie folgt:
<a class="self-link" href="#buried_sub_anchor">Buried Sub Anchor</a>
In einem anderen Zusammenbruch Panel Ich habe einen Inhalt div wie folgt aus:
<div class="anchor" id="buried_sub_anchor">
Mein jQuery-Code, den Klick zu handhaben ist:
$('.self-link').on('click', function() {expandCollapseWithHash(this.hash); });
function expandCollapseWithHash(hash) {
var $collapses = $(hash).parents('.collapse');
if ($collapses.length > 0) {
var $collapse = $collapses.first()
$collapse.collapse('show');
}
}
Wenn die .collapse ('Show') ich erwarte Bootstrap genannt wird, auf magische Weise schließen das aktuelle Panel und öffnen Sie das Ziel. Dann, wenn dieser Übergang erfolgt, erwarte ich das ‚‘ gezeigt Ereignis ausgelöst, die ich so handhaben:
$('.collapse').on('shown.bs.collapse', function() {
if (location.hash) {
$(location.hash).show();
}
});
Ich erwarte die .show() rufen Sie die Seite direkt auf dem verankerten zu springen div. Aber keine Würfel.
Um es zusammenzufassen, wenn ich auf den Link Ich möchte klicken:
- Die aktuelle Panel .collapse ('verstecken')
- Die Zieltafel ('show')
- .collapse die Seite zu dem verankerten div in der Zieltafel
Statt zu springen, immer:
- Das aktuelle Panel ändert sich nicht (d. H. es bleibt gezeigt)
- Die Zieltafel
- Die Seite springt an einen neuen Standort zeigen sich aber bei weitem nicht der Anker div Abschnitt gewünschte
Meine Fragen sind:
- Warum funktioniert der aktuelle Panel-Kollaps? Ich würde erwarten, dass die Bootstrap-Akkordeon-Funktion dies als Ergebnis des Aufrufs
$collapse.collapse('show')
tun würde. - Warum scrollt die Seite nicht zum verknüpften Inhalt?
Here is a fiddle.Zu reproduzieren:
- Klick auf die "Mehr Details"
- scroll den ganzen Weg hinunter
- klicken Sie auf den "Buried Unter Anker" link
Vielen Dank @Louys. Das bringt mich zum richtigen Panel, das großartig ist. Ich wollte aber weiter scrollen, bis der Divider "Begrabener Sub-Ankertext" rechts oben auf der Seite unterhalb der Kopfzeile steht. Ich beantwortete meine eigene Frage ... die Lösung war eine Einlage, die mir tagelang entging. In meiner Antwort geht es nicht nur darum, wie man das Zielfenster öffnet, sondern auch, wie man das gerade geöffnete Ausklappfenster schließt. – davidh