2015-11-19 3 views
0

Я хотел бы посетить мой сайт: http://testsite.com/#accordion2 и для него на якорь & открыть второй аккордеон. Как мне это достичь? Мне также хотелось бы, чтобы это произошло для первого аккордеона, если URL был #accordion1.Открыть специальное меню аккордеона

Вот мой Fiddle: http://jsfiddle.net/jmjmotb3/

function close_accordion_section(source) { 
 
     $(source).parent().find('.accordion-section-title').removeClass('active'); 
 
     $(source).parent().find('.accordion-section-content').slideUp(300).removeClass('open'); 
 
    } 
 

 
    $('.accordion-section-title').click(function(e) {  
 
     if($(e.target).is('.active')) { 
 
      close_accordion_section(e.target); 
 
     }else { 
 
      $(this).addClass('active'); 
 
      $(e.target).parent().find('.accordion-section-content').slideDown(300).addClass('open') 
 
     } 
 

 
     e.preventDefault(); 
 
    });
.accordion { 
 
    overflow: hidden; 
 
    margin-bottom: 40px; 
 
} 
 

 
.accordion-section { 
 
    padding: 15px; 
 
    border: 1px solid #d8d8d8; 
 
    background: #fbfbfb; 
 
} 
 

 
.accordion-section-title { 
 
    width: 100%; 
 
    display: inline-block; 
 
    background: url("http://placehold.it/50x50") top right no-repeat; 
 
} 
 

 
.accordion-section-title.active, .accordion-section-title:hover { 
 
    text-decoration: none; 
 
} 
 

 
.accordion-section-content { 
 
    padding: 15px 0; 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id="accordion1" class="accordion"> 
 
    <div class="accordion-section"> 
 
     <a class="accordion-section-title" href="#accordion-1">More information</a> 
 
    <div id="accordion-1" class="accordion-section-content"> 
 
     <p>Text.</p> 
 
     <p> 
 
    </div> 
 
    </div> 
 
</div> 
 
    
 
    <div id="accordion2" class="accordion"> 
 
    <div class="accordion-section"> 
 
     <a class="accordion-section-title" href="#accordion-1">More information 2</a> 
 
    <div id="accordion-1" class="accordion-section-content"> 
 
     <p>Text.</p> 
 
     <p> 
 
    </div> 
 
    </div> 
 
</div>

ответ

1

Проверьте window.location.hash имущество и идти оттуда.

document.addEventListener('DOMContentLoaded', function() { 

    if (window.location.hash === 'x') { 
     // do x 
    } 

}); 
+0

Благодарим за это, Брайан. Итак, как мне интегрировать это в мое текущее решение? – michaelmcgurk

+1

Эй, Майкл. Ну, ваше текущее решение нуждается в некоторых настройках, так как у вас есть функция close_accordion_section, вы также должны иметь функцию open_accordion_section. Как только вы это сделаете, тогда в dom ready вам нужно будет вызвать 'open_accordion_section (window.location.hash)'. Здесь я устанавливаю простой пример, но скрипка кажется немного утонченной с точки зрения захвата хеша местоположения, поэтому я просто жестко закодировал его в верхней части обработчика dom. http://jsfiddle.net/agentfitz/su5xxzav/6/ –

+0

Абсолютно фантастический, Брайан! Да, я тоже получал глюки на скрипке, пытаясь привести хэш. Я добавлю это к моему текущему кодовому имени и отчитаюсь. Спасибо!!! – michaelmcgurk

Смежные вопросы