2016-04-19 2 views
0

Во-первых: Извините за мой плохой английский!Аккордеон должен быть открыт, нажав на ссылку или якорь

Есть две ссылки с различным анкером, например:

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

Когда кто-то щелкает один из этих ссылок, он автоматически сайта и положения, он должен быть. Хорошо.

Но на сайте есть аккордеон, и текст не отображается. Положение с anchor2 должны быть открыты, нажав на ссылку с якорем 2.

Вот JQuery:

<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> 

И HTML для содержания ссылка:

<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> 

Как я могу открыть аккордеон, щелкнув ссылку/якорь. Спасибо за помощь!

ответ

0

JavaScript дополнение для проверки якоря в URL и открыть аккордеон:

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

Вы только что пропустили, вам нужно сначала спрятать элементы, чтобы они не отображались. Вы можете использовать $("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(); 

    }); 

Вот fiddle

+0

Спасибо за ответ. Это не моя проблема. Аккордеон отлично работает, и текст скрывается, когда вы впервые посещаете сайт. Но как можно открыть аккордеон, щелкнув ссылку с якорем? Существует несколько ссылок, и каждый из них принадлежит к одному аккордеон, который должен быть открыт щелчком. – Andi

+0

Я все еще не уверен, понимаю ли я проблему. Вам просто нужно автоматически нажать на аккордеон в первый раз? если это так, просто используйте jQuery trigger ('click') event – Mayday

+0

Да, это отлично работает с щелчком по титу или изображению. Он скользит вверх и вниз. Но у меня есть внешняя ссылка, и тогда только один из нескольких аккордеонов должен быть открытым. Когда вы нажмете другую ссылку, будет открыт другой аккордеон. Эта внешняя ссылка не находится на той же странице, что и на аккордеоне. Когда кто-то нажимает на ссылку, он открывает новый сайт, и, например, третий аккордеон должен быть уже открыт. Остальные закрыты. Как я могу открыть определенную панель с внешней ссылкой? – Andi