2015-08-19 4 views
0

Я пытаюсь назначить объект для дальнейшей обработки с помощью jQuery, но он не работает. Вот мой код:Невозможно назначить объект sessionStorage

$('.var').on('click', function() { 
    console.log($(this)); 
    sessionStorage.setItem('object', JSON.stringify($(this))); 
    console.log(JSON.parse(sessionStorage.getItem('object'))); 
} 

Обе консоли журналы не имеют одинаковое значение. Зачем?

Второй пример:

$('.var').on('click', function() { 
    sessionStorage.setItem('object', JSON.stringify($(this))); 
    var item = JSON.parse(sessionStorage.getItem('object')); 
    item.addClass('not-work'); //does not work 
    $(this).addClass('work'); //works 
    e.preventDefault(); 
} 

Что я делаю неправильно с sessionStorage().

+0

У какого объекта есть класс «var»? вы пытаетесь сохранить элемент? –

+1

Вы не сможете извлекать определенные типы объектов из строки с помощью 'JSON.parse'. В вашем втором примере «item» - это простой объект, а не jQuery. Есть много решений. Одним из возможных является предоставление всем элементам обработки определенных идентификаторов, хранение этих идентификаторов вместо этого, а затем их использование для поиска конкретного узла DOM. – raina77ow

+0

Интересно, как вы получили 'JSON.stringify', строгий объект DOM без металирования. – Bergi

ответ

2

JSON.stringify методы strip из строкового объекта, поскольку действительный JSON не включает функции.

Пример:

var obj = { 
prop: 5, 
method: function() {} 
}; 

JSON.stringify(obj); 

Результат: "{"prop":5}"

0

@Ori Drori's answer объясняет первый пример.

Во втором примере вы получаете элемент DOM (jquery wrapped), преобразуете его в string! и сохраняете в sessionStorage.

А потом эта string из sessionStorage, сделать JSON.parse в надежде получить элемент DOM, но вместо этого вы получите яваскрипт объект, который, безусловно, не является элементом в дереве DOM (как я полагаю, вы ожидаете) & поэтому, звоните .addClass на нем не работает.

+0

Это элемент DOM в обоих случаях ... – Shomz

+0

Я имею в виду второй пример, и это не элемент DOM, когда мы выходим из SessionStorage! –

+0

Забавно, потому что я читаю '' Во втором примере вы получаете элемент DOM »' – Shomz

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