JQuery - Запомните запущенную функцию

0

У меня есть панель навигации для языков. Вы можете скрыть его с помощью кнопки jQuery. Но каждый раз, когда вы обновляете страницу, появляется снова навигационная панель.

Как я могу заставить его скрываться после нажатия кнопки "Скрыть", пока вы не нажмете кнопку еще раз, чтобы показать ее.

У меня уже есть функция скрытия и отображения.

JQuery:

            jQuery(document).ready(function(){
        jQuery('#hideshow').on('click', function(event) {        
             jQuery('#lang').toggle('show');
            debugger
            if($('#hideshow').text()=="Hide"){
                $('#hideshow').text("Show")
                }
        });
    });

Fiddle (скрипка выглядит не слишком хорошо, но работает)

Кстати, я действительно новичок в JS и jQuery! :)

  • 0
    Чтобы запомнить состояние бара при перезагрузке, я бы использовал cookie. Вы рассматривали это?
  • 0
    Именно то, что я искал. Но я очень плохо знаком с JavaScript, поэтому ни одно из руководств по cookie-файлам не было для меня действительно полезным.

3 ответа

1

Чтобы иметь постоянное состояние вашего бара, вам необходимо сохранить это состояние либо в файле cookie, либо в локальном хранилище. Вы можете использовать, например:

0

Просто используйте cookie.

// if you want to set it for num of days, pass that in. 
// Otherwise leave empty and it will be a session cookie.
// and remember to pass in a number for days, not a string
function setCookie(name,value,days) {
   var date, expires;
   if (days) {
      date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      expires = "; expires=" + date.toGMTString();
        }else{
      expires = "";
   }
   document.cookie = name + "=" + value + expires + "; path=/";
}

Если вы хотите прочитать файл cookie, включите следующий метод.

function getCookie(name) {
   var i, c, arr, cName = name + "=";
    arr = document.cookie.split(';');
    for(i=0;i < arr.length;i++) {
       c = arr[i];
          while (c.charAt(0)==' ') {
             c = c.substring(1,c.length);
          }
         if (c.indexOf(cName) == 0) {
            return c.substring(cName.length,c.length);
         }
    }
return '';
}

Чтобы получить и написать в файл cookie, выполните следующие действия:

setCookie('naviSet', true);

Чтобы прочитать файл cookie 'naviSet://вы можете называть его чем угодно.

getCookie('naviSet')

Затем в вашем коде проверьте, установлен ли он. Если нет, запустите свой код THEN, чтобы установить его.

if( getCookie('naviSet') != true){
   // run your code
   // set your coookie, to whatever value you want. I just happend to use "true"
}
0

Попробуй это

Используйте плагин COOKIE:

Установить файл cookie

$.cookie("div_status", "hide"); //set hide or show

Получить файл cookie

alert( $.cookie("div_status") ); //then call on page load to get div status

Удалить файл cookie

$.removeCookie("div_status"); //remove if not need

Ещё вопросы

Сообщество Overcoder
Наверх
Меню