2016-04-19 9 views
0

First: Sorry für mein schlechtes Englisch!Akkordeon sollte geöffnet werden, indem Sie auf Link oder Anker klicken

Es gibt zwei Verbindungen mit unterschiedlichen Anker zum Beispiel:

<a href="www.test.ch?name=example#anchor1"> 
<a href="www.test.ch?name=example#anchor2"> 

Wenn jemand einen dieser Links klicken, ist er automatisch von der Stelle und der Position, sollte er sein. Gut.

Aber in der Website gibt es ein Akkordeon und der Text wird nicht angezeigt. Die Position mit dem VERANKERUNG2 sollte durch Klicken auf den Link mit Anker 2.

Hier ist die jquery offen:

<script>   
     $().ready(function() { 
      $(".accordeon .ancor").click(function() { 
       var textContainer = $(this).parent().children(".text"); 
       if (textContainer.is(":visible")) { 
        textContainer.slideUp(); 
        $(this).attr("src", "images/accordon_open.jpg"); 
       } 
       else { 
        textContainer.slideDown(); 
        $(this).attr("src", "images/accordon_close.jpg"); 
       } 
      }); 

      $(".accordeon .text").hide(); 

     }); 
    </script> 

Und der HTML-Code für den Link Inhalt:

<div class="accordeon"> 
    <img class="ancor button" src="images/accordon_open.jpg"> 
    <div class="title ancor"> 
      Titel anchor 1 
    </div> 
    <div class="text"> 
     <a name="anchor1"></a> 
     text anchor1 (should be not visible) 
    </div> 
</div> 

<div class="accordeon"> 
    <img class="ancor button" src="images/accordon_open.jpg"> 
    <div class="title ancor"> 
      Titel anchor 2 
    </div> 
    <div class="text"> 
     <a name="anchor2"></a> 
     text anchor2 (should be visible, because someone had click the link for it) 
    </div> 
</div> 

Wie kann ich öffnen das Akkordeon durch Klicken auf den Link/Anker. Danke für Ihre Hilfe!

Antwort

0

JavaScript Zusätzlich ist der Anker in der URL für die Überprüfung und öffnen Sie das Akkordeon:

if(window.location.hash){ 
    $(window.location.hash + ".accordeon .text").show(); 
    $(window.location.hash + ".accordeon img").attr("src","images/accordon_close.jpg"); 
} 
0

Sie haben gerade verpasst, dass Sie zuerst die Elemente verstecken müssen, damit sie nicht angezeigt werden. Sie können $("div.text").hide();

$().ready(function() { 
     $("div.text").hide(); 
     $(".accordeon .ancor").click(function() { 
      var textContainer = $(this).parent().children(".text"); 
      if (textContainer.is(":visible")) { 
       textContainer.slideUp(); 
       $(this).attr("src", "images/accordon_open.jpg"); 
      } 
      else { 
       textContainer.slideDown(); 
       $(this).attr("src", "images/accordon_close.jpg"); 
      } 
     }); 

     $(".accordeon .text").hide(); 

    }); 

Hier verwenden fiddle

+0

Danke für die Antwort. Das ist nicht mein Problem. Das Akkordeon funktioniert großartig und der Text ist versteckt, wenn Sie die Seite zum ersten Mal besuchen. Aber wie kann das Akkordeon bereits geöffnet werden, indem Sie auf den Link mit dem Anker klicken? Es gibt mehrere Links und jeder von ihnen gehört zu einem Akkordeon, das durch Klicken geöffnet werden sollte. – Andi

+0

Ich bin mir immer noch nicht sicher, ob ich das Problem verstehe. Sie müssen nur das Akkordeon zum ersten Mal Auto-klicken? wenn das der Fall ist, benutze einfach jquery trigger ('click') event – Mayday

+0

Ja, das funktioniert gut mit dem Klick auf den Titel oder das Bild. Es rutscht auf und ab. Aber ich habe einen externen Link und dann sollte nur einer von mehreren Akkordeons geöffnet sein. Wenn Sie auf einen anderen Link klicken, wird ein anderes Akkordeon geöffnet. Dieser externe Link ist nicht auf der gleichen Seite wie das Akkordeon. Wenn jemand auf den Link klickt, öffnet sich eine neue Seite und das dritte Akkordeon sollte bereits geöffnet sein. Die anderen sind geschlossen. Wie kann ich ein bestimmtes Panel mit einem externen Link öffnen? – Andi

Verwandte Themen