Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2012, 12:03
Новичок на форуме
Отправить личное сообщение для taobo Посмотреть профиль Найти все сообщения от taobo
 
Регистрация: 29.08.2012
Сообщений: 4

Обработка события с 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;

	
});
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2012, 12:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Не наю = мож так ?
$(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 ()	
});
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2012, 13:09
Новичок на форуме
Отправить личное сообщение для taobo Посмотреть профиль Найти все сообщения от taobo
 
Регистрация: 29.08.2012
Сообщений: 4

нет, так он без перезагрузки страницы не хочет вообще "избранное" открывать. Может в этом проблема - у меня избранное открывается как модальное окно:
<a data-toggle="modal" data-target="#favorites" href="javascript:;" id="show_my_favor">Список желанных товаров</a>
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2012, 13:30
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

taobo,
Короче нужно после записи по клику - заново вызывать функцию открытия избранного
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2012, 13:34
Новичок на форуме
Отправить личное сообщение для taobo Посмотреть профиль Найти все сообщения от taobo
 
Регистрация: 29.08.2012
Сообщений: 4

Сообщение от Deff Посмотреть сообщение
taobo,
Короче нужно после записи по клику - заново вызывать функцию открытия избранного
В том смысле, что вызывать функцию загрузки избранного? Это имелось в виду?

открытие избранного происходит вручную (тоже по клику). А вот построение его DOM (с записью из Local Storage) происходит (по задумке) когда документ загрузился.
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2012, 14:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от taobo
открытие избранного происходит вручную (тоже по клику). А вот построение его DOM (с записью из Local Storage) происходит (по задумке) когда документ загрузился.
Ну занчит объединяйте и делайте всё по клику подгрузку и построение - либо построение, каждый раз вызывайте после очередного клика для записи в стораге(помимо построения при загрузке страницы
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2012, 14:36
Новичок на форуме
Отправить личное сообщение для taobo Посмотреть профиль Найти все сообщения от taobo
 
Регистрация: 29.08.2012
Сообщений: 4

Спасибо вам за помощь!

Сделал: загрузка в DOM из LS по готовности модального окна. Работает. Еще раз спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка события после закрытия модального окна byaka Events/DOM/Window 3 11.08.2012 19:19
Цепная обработка события MouseDown с использованием jQuery gifer Events/DOM/Window 0 18.02.2011 16:55
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 17:01
Обработка события выделения текста cabelas jQuery 0 26.11.2009 15:03
Обработка события Deep Events/DOM/Window 12 29.07.2009 22:58