2009-11-25 3 views
0

Я построил навигацию по боковой панели, которая обрушивается &, расширяется при нажатии на навигационные заголовки. все это прекрасно работает. однако, если я разворачиваю/открываю одну из навигационных групп и нажимаю, чтобы перейти на страницу, когда новая страница загружает все навигационные группы, снова начнет закрываться. Я хотел бы найти способ, чтобы активная группа навигации оставалась открытой.Использование JQuery для сохранения активной поднавигация при загрузке новой страницы

Вот что я использовал для развала/расширения: (это в настоящее время настроен таким образом, что только одна из навигационных групп будут открыты одновременно)

/* Collapse and Expand */ 
$(".slideTitle").click(function() { 
    $(".indexListOpen").removeClass("indexListOpen").addClass("indexList"); 
    $(this).next().toggleClass("indexList").toggleClass("indexListOpen"); 
}); 

И это то, что я пытался использовать для поддержания текущих открытых нав группы при новой страницы:

/* keep current nav group open */ 
var path = location.pathname; 
$('.indexListOpen a[@href$="' + path + '"]').addClass("selected"); 
$(".selected").parent().parent().removeClass("indexList").addClass("indexListOpen"); 

Не работает ... так что я уверен, что я делаю много плохого. Страница, над которой я работаю, находится по адресу instarservices.com/commercial

Любая помощь приветствуется !!!

ответ

1

Как сказал dcneiner, @ устарел в последней версии jQuery. Но похоже, что вы нацеливаете indexListOpen, который не существует при новой загрузке страницы. Так или удалить это или изменить его на indexList и он должен работать

$('a[href$="' + path + '"]').addClass("selected"); 

или

$('.indexList a[href$="' + path + '"]').addClass("selected"); 
+0

Спасибо! Это работало как шарм! – VUELA

1

Если вы используете jQuery 1.3 или более новую (точечную версию), селектора атрибутов нельзя вызвать с помощью символа @. Кроме того, наличие стартовой косой черты может вызвать проблемы. Поэтому я рекомендовал бы это сделать:

var path = location.pathname.replace(/(^\/)/g,''); // Removes the opening slash if present 
$('.indexListOpen a[href$=' + path + ']').addClass("selected"); 

Если вы столкнетесь с различиями браузера (работает в некоторых, а не в другом), то проверьте три вещи:

  1. Вам может понадобиться, чтобы избежать / характера перед использованием это в селекторе JQuery
  2. Вы можете получать слэш в pathname, который не присутствует в конце ваших селекторов
  3. на большинстве серверов для Windows, URL не чувствительны к регистру. Вы хотите добавить .toLowerCase() в конец инструкции path = location ... и убедитесь, что ваши href атрибуты - все в нижнем регистре.

Удачи, и если эти предложения не работают, попробуйте опубликовать свой HTML-код для своей навигации, чтобы помочь нам устранить его.

+0

Огромная помощь !! Спасибо! Я не понимал, что символ @ устарел. Я также рассмотрю ваши другие советы! – VUELA