2014-01-27 6 views
0

Я пытаюсь сохранить состояние с помощью файла cookie, используя jquery, но не повезло. Может кто-нибудь проверить, что не так с моим кодом?Состояние блока отображения DIV после обновления страницы

$('.slide1').click(function() { 
    $('.target1').slideToggle('slow', function() { 
     $(this).toggleClass('.target1'); 
    }); 
    $.cookie('form_visible', $('.target1').css('display','block').toString()); 
    return false; 
});   
$(function() { 
    if($.cookie('form_visible') == 'true') { 
     $('.target1').css('display','block'); 
    } else { 
     $('.target1').css('display','none'); 
    } 
}); 

http://jsfiddle.net/J9zQm/

+0

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

+0

Я думал, что у jsfiddle есть библиотеки, и я не уверен, какой плагин для печенья вы говорите, я нашел этот код на другом посту, и это сработало, но после того, как я сделал некоторые изменения, чтобы заставить его работать с моим сайтом, он прекратил работу –

+0

вам нужно плагин для использования '$ .cookie' – Oriol

ответ

2

Некоторые проблемы:

  1. Вам нужен плагин

    Для того, чтобы использовать $.cookie, вам нужно plugin. Вы, кажется, не знаете этого.

  2. Вы пытаетесь сохранить "[object Object]"

    $('.target1').css('display','block') 
    

    возвращает объект (т.е. $('.target1'))

    Затем,

    $('.target1').css('display','block').toString() 
    

    возвращается

    "[object Object]" 
    
  3. $('.target1') пуст

    используется

    $('.target1').slideToggle('slow', function() { 
        $(this).toggleClass('.target1'); 
    }); 
    

    То есть:

    • Если $('.target1') пуст, вы не делаете ничего
    • Если $('.target1') не пуст, вы удалите свой класс '.target1', так что после $('.target1') будет пустым.

Здесь у вас есть рабочий пример того, что вы хотите, но с использованием sessionStorage вместо $.cookie, так как я не знаю, как это работает.

JS:

var $target1 = $('.target1'); 
$target1.toggleClass('hidden', sessionStorage.getItem('form_visible') != 'true'); 
$('.slide1').click(function() { 
    $target1.slideToggle('slow', function() { 
     $(this).toggleClass('hidden'); 
    }); 
    sessionStorage.setItem('form_visible', $target1.hasClass('hidden')); 
}); 

CSS:

.target1.hidden{ 
    display:none; 
} 

Demo

+0

@Bamba См. Мое обновление с рабочим примером – Oriol

+0

, похоже, он работает, но он вырывается из div, я думаю, когда я пытаюсь переместить содержимое под .target1 в середину, он стреляет влево после его открытия. –

+0

@Bamba I не понимаю. Вы говорите о моей [демо] (http://jsfiddle.net/J9zQm/1/)? – Oriol

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