2014-07-26 11 views
5

Ich möchte URLs mit Hashes verwenden, um bestimmte Bootstrap-Modale aufzurufen. Mit anderen Worten, ein Benutzer befindet sich auf Seite 1 und klickt auf einen Link zu page2 # hash und auf #hash modal loads, wenn page2 geladen wird. Ich habe so viele Variationen ausprobiert, basierend auf dem, was ich in anderen Q/As gelesen habe, aber nichts hat funktioniert. Ich bin überhaupt nicht erfahren mit JS, also würde ich etwas Hilfe schätzen!Toggle Bootstrap Modal mit URL und Hash

Hier ist, was ich habe:

-Link auf Seite1: <a href="/page2#myModal>

HTML auf page2:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-hidden="true"> 
    ... 
</div> 


Javascript auf page2:

<script> 
    if(window.location.hash) { 
    var hash = window.location.hash; 
    $("'" + hash + "'").modal('toggle'); 
    } 
</script> 


Übrigens, <a href="#" data-toggle="modal" data-target="#myModal"> funktioniert gut, um das Modal aufzurufen, wenn sich der Benutzer tatsächlich auf Seite 2 befindet.

Antwort

12

Sie fügen einfache Anführungszeichen zu Ihren Wählern, Wähler Anführungszeichen nicht verwenden:

$("'" + hash + "'").modal('toggle'); 

sollte

$(hash).modal('toggle'); 

Auch

sein könnten Sie nicht warten, für den dom bereit sein, verwenden . Wenn Sie dieses Skript nicht unten auf der Seite oder zumindest unterhalb Ihres modalen HTML-Codes haben, wird es nicht gefunden, da es noch nicht erstellt wurde.

<script> 
    //shortcut for $(document).ready 
    $(function(){ 
     if(window.location.hash) { 
      var hash = window.location.hash; 
      $(hash).modal('toggle'); 
     } 
    }); 
</script> 
+0

Danke, Patrick. Ich habe die js an den unteren Rand der Seite verschoben und meine js durch deine ersetzt, und es hat immer noch nicht funktioniert. Keine Ahnung, warum ... – lacoder

+0

Erhalten Sie Fehler auf Ihrer Konsole? Oder haben Sie ein Live-Beispiel, das Sie sehen können? –

+0

Verstanden! Die Konsole zeigte "Uncaught TypeError: undefined ist keine Funktion" und referenzierte die Zeile mit '$ (hash) .modal ('toggle');'. Also habe ich etwas gegraben und unsere jQuery von 1.11.1 auf 2.1.1 geändert. Dann hat der Code, den du zur Verfügung gestellt hast, funktioniert! Vielen Dank, Patrick. – lacoder