Обработка события с Local Storage
Добрый день,
пользуюсь плагином jquery.storage. Сделал, чтобы данные записывались с LocalStorage по клику и извлекались из него по клику - вообщем, "избранное" получилось: все заносится и извлекается. Но есть проблема, DOM с избранным из Local Storage не заполняется, пока страницу не обновишь. Т.е. при первом вызове показывает пустой дом, а если страницу обноввить, то заполняет DOM. Где-то накосячил с событиями. Но в силу слабого знакомства с js разобраться не могу. Буду рад помощи. В коде есть пометки: $(document).ready(function(){ //ждем когда все подгрузится $("#myfavor").click(function(){ //если жамкнули на myfavor var pr = $("#pr_name").attr("rel"); // pr = name==url; //смотрим rel у ссылки и заносим все это дело в Local Storage if (pr) { var my_favor = $.Storage.get('my_favor'); if (!my_favor) { my_favor = ""; } /* обрезаем длинную строку var pr_len = my_favor.length; if (pr_len > 700) { my_favor = my_favor.substr(0,700); } /* узнаём последний просмотренный crnt = pr.split('=='); crnt = crnt[1]; //url текущего товара lst = my_favor.split("||"); lst = lst[0]; // первый элемент lst = lst.split("=="); lst = lst[1]; // url последнего просмотренного if (lst != crnt) { my_favor = pr + "||" + my_favor; $.Storage.set( 'my_favor', my_favor); } } }); /* последние просмотренные: результаты для избранного $("#my_favor_show").html("<ul></ul>"); //в этом div будет выводится содержание из Local Storage var my_favor = $.Storage.get('my_favor'); my_favor = my_favor.split("||"); var res = 0; $.each(my_favor, function(){ if ( res > '7' ) { return false; } /* счётчик crnt = $(this)[0].split("=="); if ( !crnt[1] ) { return false; } $("#my_favor_show ul").append("<li class='bit'><p class='aboutseller'><a class='fotofactory' href='/" + crnt[1] + "'>" + crnt[0] + "</a></p></li>"); res += 1; }); return false; }); |
Не наю = мож так ?
$(document).ready(function(){ //ждем когда все подгрузится $("#myfavor").click(function(){ //если жамкнули на myfavor var pr = $("#pr_name").attr("rel"); // pr = name==url; //смотрим rel у ссылки и заносим все это дело в Local Storage if (pr) { var my_favor = $.Storage.get('my_favor'); if (!my_favor) { my_favor = ""; } /* обрезаем длинную строку var pr_len = my_favor.length; if (pr_len > 700) { my_favor = my_favor.substr(0,700); } /* узнаём последний просмотренный crnt = pr.split('=='); crnt = crnt[1]; //url текущего товара lst = my_favor.split("||"); lst = lst[0]; // первый элемент lst = lst.split("=="); lst = lst[1]; // url последнего просмотренного if (lst != crnt) { my_favor = pr + "||" + my_favor; $.Storage.set( 'my_favor', my_favor); } } SetMy_favor_show () }); /* последние просмотренные: результаты для избранного function SetMy_favor_show (){ $("#my_favor_show").html("<ul></ul>"); //в этом div будет выводится содержание из Local Storage var my_favor = $.Storage.get('my_favor'); my_favor = my_favor.split("||"); var res = 0; $.each(my_favor, function(){ if ( res > '7' ) { return false; } /* счётчик crnt = $(this)[0].split("=="); if ( !crnt[1] ) { return false; } $("#my_favor_show ul").append("<li class='bit'><p class='aboutseller'><a class='fotofactory' href='/" + crnt[1] + "'>" + crnt[0] + "</a></p></li>"); res += 1; }); return false; } SetMy_favor_show () }); |
нет, так он без перезагрузки страницы не хочет вообще "избранное" открывать. Может в этом проблема - у меня избранное открывается как модальное окно:
<a data-toggle="modal" data-target="#favorites" href="javascript:;" id="show_my_favor">Список желанных товаров</a> |
taobo,
Короче нужно после записи по клику - заново вызывать функцию открытия избранного |
Цитата:
открытие избранного происходит вручную (тоже по клику). А вот построение его DOM (с записью из Local Storage) происходит (по задумке) когда документ загрузился. |
Цитата:
|
Спасибо вам за помощь!
Сделал: загрузка в DOM из LS по готовности модального окна. Работает. Еще раз спасибо. |
Часовой пояс GMT +3, время: 06:47. |