#javascript #jquery #toggle #jquery-events
#javascript #jquery #переключение #jquery-события
Вопрос:
У меня небольшая проблема с jQuery.
Ситуация:
У меня есть фрагмент кода jQuery, где я переключаю результаты.
JS-код:
//Set default open/close settings
$('.acc_container').hide(); //Hide/close all containers
//$('.acc_trigger:first').addClass('active').next().show(); //Add "active" class to first trigger, then show/open the immediate next container
//On Click
$('.acc_trigger').click(function(){
if( $(this).next().is(':hidden') ) { //If immediate next container is closed...
$('.acc_trigger').removeClass('active').next().slideUp(); //Remove all .acc_trigger classes and slide up the immediate next container
$(this).toggleClass('active').next().slideDown(); //Add .acc_trigger class to clicked trigger and slide down the immediate next container
}
return true; //Prevent the browser jump to the link anchor
});
Теперь я хочу открыть — переключить элемент в положение привязки с URL, например ( http://x.com/page.php#toggleItem2
)
Вопрос: Как прочитать toggleItem2
из URL и открыть именно этот раздел?
Дополнительные:
HTML-код:
<div class="container">
<h2 class="acc_trigger"><a href="#toggle1">Item1</a></h2>
<div class="acc_container">
<div class="block">
Inner Text in toggle 1
</div>
</div>
<h2 class="acc_trigger"><a href="#toggle2">Item2</a></h2>
<div class="acc_container">
<div class="block">
Inner Text in toggle 2
</div>
</div>
<h2 class="acc_trigger"><a href="#toggle3">Item3</a></h2>
<div class="acc_container">
<div class="block">
Inner Text in toggle 3
</div>
</div>
</div>
Я надеюсь, что проблема четко определена.
Ответ №1:
Вы должны указать свои div
идентификаторы в соответствии с привязками, например
<h2 class="acc_trigger"><a href="#toggle1">Item1</a></h2>
<div id="toggle1" class="acc_container">
<div class="block">
Inner Text in toggle 1
</div>
</div>
Вы можете получить фрагмент документа из location
объекта:
document.location.hash
Тогда это просто (при условии, что все остальные контейнеры скрыты):
$(document.location.hash).slideDown().prev().addClass('active');
Комментарии:
1. Я пробовал этот код, но при обновлении страницы все элементы «закрыты» (переключены вверх)…
2. @human: Вы дали div идентификатор? Вы поместили код внутрь
document.ready
обработчика?3. Это мое обновление вашего решения, и оно работает. $(document.location.hash).addClass(‘active’).next().show(); Спасибо.
4. @Human: Тогда, похоже, вы присвоили идентификатор
h2
элементу вместоdiv
. До тех пор, пока это работает для вас 😉5. @Felix: У меня есть дополнительный вопрос… Как с этим справиться, когда в URL-адресе также есть другой параметр, такой как ( x.com/page.php?i=8#toggleItem2 ). Мой код в этом случае не работает :/
Ответ №2:
Попробуйте сам jquery переключать
Ответ №3:
Это хранится в window.location.hash
переменной.
Ответ №4:
Вы можете сделать что-то вроде этого:
Javascript:
$().ready(function(){
$('.acc_trigger a').click(function(){
$(this).closest('.acc_trigger').next('.acc_container').toggle()
return false;
})
})
Комментарии:
1. Вы должны включить соответствующий код с другой страницы в текст вашего ответа. 🙂
2. я сделал это до того, как вы прокомментировали это.