2016-01-27 6 views
0

У меня есть код jQuery для моего навигатора, который управляет выпадающим списком и другим стилем. В целях тестирования я сделал первую строку:Сохраните стили CSS после перехода на другую страницу

$(".dropdown--link").on("click", function(event) { 
    event.preventDefault(); 
}) 

, но это не позволяет моей ссылке работать. Есть ли способ поддерживать стиль jQuery и ссылку на новую страницу при сохранении добавленного стиля? Например, после стирания послеevent.preventDefault(); удаляется после перехода на новую страницу, и я хочу, чтобы она осталась (в случае удаления preventDefault).

(".dropdown--link").on("click", function(event) { 
     // event.preventDefault(); 

     var targetPosition = $(this).offset().left; 
     var targetWidth = $(this).width(); 
     var targetCenter = targetPosition + (0.5 * targetWidth) - 10; 

     $("nav ul li").each(function() { $(this).removeClass("bold"); }); 
     $(this).addClass('bold'); 
     $(".arrow-down").show(); 
     $(".arrow-down").css("left", targetCenter); 
}) 
+0

Я немного смущен относительно того, о чем вы просите. Я не вижу никакой навигации в вашем предоставленном коде. Переход на новую страницу обычно означает, что вся страница * перезагружена *, что означает, что любой стиль, который вы настроили, потерян. –

+4

В этом коде нет никакого способа сделать это. Вам нужно будет добавить код на следующей странице, который будет делать то, что вы хотите. – epascarello

+1

Если вы хотите передать информацию на следующую страницу, чтобы восстановить ее, как вам нужно (как описано в @epascarello), вы можете передать параметр в URL-ссылке ссылки или установить cookie для сеанса. – DamienBAus

ответ

1

Вы можете сохранить «статус» стиля в локальном хранилище и каждый раз, когда вы загружаете страницу, измените стиль, если он был изменен ранее.

function changeStyle() { 
     // event.preventDefault(); 
     localStorage.setItem("styleChanged", "1"); 

     var targetPosition = $(this).offset().left; 
     var targetWidth = $(this).width(); 
     var targetCenter = targetPosition + (0.5 * targetWidth) - 10; 

     $("nav ul li").each(function() { $(this).removeClass("bold"); }); 
     $(this).addClass('bold'); 
     $(".arrow-down").show(); 
     $(".arrow-down").css("left", targetCenter); 
} 

$(".dropdown--link").on("click", changeStyle); 

$.ready(function(){ 
    var styleChanged = localStorage.getItem("styleChanged"); 
    if (styleChanged && styleChanged.equals("1")) { 
     changeStyle(); 
    } 
}); 

Когда вы хотите отменить изменения запустить этот код:

localStorage.setItem("styleChanged", "0"); 
+0

Спасибо, похоже, что она должна работать, но я думаю, что я просто приближаюсь к этой проблеме неправильно и должен переосмыслить использование чего-то вроде AngularJS –

+0

Это верно для вашего проекта. Но этот ответ решает ваш первоначальный вопрос. – Gavriel

1

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

Взгляните. AngularJS, KnockoutJs, EmberJS. или даже MVC от Microsoft. все они позволяют вам иметь сайты с одной страницей, которые обновляют только часть вашей страницы.

Ад вы можете просто обновить контент на своей странице с помощью вызова Ajax, если хотите.

Сохранение состояния на другой странице будет работать только с параметрами url или с переменными сеанса.

+0

Да, я недавно начал играть с AngularJS, возможно, это то, что я должен делать –

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