Ваши разделы сохраняют свои штрафа в открытом состоянии, но закрываются, когда вы открываете новую страницу.
Однако ваш вопрос не устраняет неоднозначность между этими двумя проблемами.
Чтобы вы могли работать на этих страницах, вам нужно ввести переменную, чтобы определить, на какой странице вы находитесь.
jQuery(function($){
var matches;
if( matches = (new String(document.location)).match(/\?c=\w+/) ) {
$("a[href=" + matches[0] + "]").parents("ul").toggle();
}
});
Должен работать как краткосрочное решение.
Таким образом, полный код будет (аннотирован)
/* Document Ready, $ = jQuery inside this scope regardless */
jQuery(function($){
/* Bind the click event on all the menus, then hide them all. */
$(".menu-header").click(function() {
$(this).next().toggle('slow');
return false;
}).next().hide();
/*
* Check to see if we're already on a sub-menu-item
* By looking in the current pages url for the string '?c=somewordhere'
*/
var matches;
if( matches = (new String(document.location)).match(/\?c=\w+/) ) {
/*
* If we are, search the page for a link to that submenu item
* ( by looking for the '?c=somewordhere' part in the hrefs )
* and find its parent menu `ul` and show it.
*/
$("a[href=" + matches[0] + "]").parents("ul").toggle();
}
}); # End Document Ready Scoping.
Для ясности,
jQuery(function($){
});
Это очень удобная сокращенная запись, которая очень мощная. Это эквивалентно выполнению
jQuery(document).ready(function($){
});
Что, в свою очередь, почти эквивалентно действию
jQuery(document).ready(function(){
var $ = jQuery;
});
Что гарантирует отказоустойчивым способом, что "$" будет jQuery внутри этой функции независимо от всего остального на странице.