Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   После выполнения операции скрипт перестает работать (https://javascript.ru/forum/jquery/12817-posle-vypolneniya-operacii-skript-perestaet-rabotat.html)

HETmozgov 04.11.2010 10:42

После выполнения операции скрипт перестает работать
 
Приветствую всех

Есть сайт http:// fetr.me/ products-page/example-category/chexol-dlya-iphone-3ggs/

В ссылке есть пробелы (дабы не была она ссылкой) и это ссылка сразу на товар, чтоб сразу можно было увидеть суть проблемы.

При клике на товар в корзине плавно появляется описание товара.
После добавления товара в корзину данный процесс не запускается...
И работает это всплывание только после обновления страницы.

Вопрос 1: какой командой jquery можно перезагрузить страницу?

Я понимаю что решение вопроса 1 - это не есть хорошее решение (нагрузка на сервер и т.д. и т.п.). Из это следует:

Вопрос 2: может кто подсказать из-за чего такой косяк происходит - после добавления товара функционал jquery обрубается.

Jquery 1.4.2.

Код выводящий описание при клике на картинку в корзине:

$j(".tovars_wrapper img.product_image").click(function() {
		if($j(this).next().is(":hidden")){ //если уже не открыт то закрываем все и открываем текущий
			$j(".tovars_wrapper .tovar_info").fadeOut("fast");
			$j(this).next().fadeIn("slow");
		}		
		else{
			$j(this).next().fadeOut("slow");
		}
	});

micscr 04.11.2010 13:32

Из-за этой строки
$j(".tovars_wrapper .tovar_info").fadeOut("fast");

нормально вначале вообще не работает.

Скорее всего вы не знаете что анимация идет параллельно, а не ждет выполнения предыдущей(если специально не указывать).

Совет:Обратите внимание на 2-й параметр функции fadeOut.

HETmozgov 04.11.2010 13:54

Спасибо за замечание.

Действительно не знал...

Исправил:
$j(".tovars_wrapper img.product_image").click(function() {
		if($j(this).next().is(":hidden")){ //если еще не открыт то закрываем все и открываем текущий
			var my_this = $j(this);
			$j(".tovars_wrapper .tovar_info").fadeOut("fast", function(){
				$j(my_this).next().fadeIn("slow");			
			});
		}		
		else{
			$j(this).next().fadeOut("slow");
		}
	});


Эффекта ноль.

А о том что не работает изначально - так я об этом и писал. Работает только после обновления страницы. А после добавления товара в корзину не работает опять же до перезагрузки. Получа6ется при добавлении товара что-то "перекрывает кислород" для моего скрипта. Вот и есть 2 решения либо найти что перекрывает либо просто перегружать страницу при каждом добавлении товара.

micscr 04.11.2010 14:13

вместо click
$j(".tovars_wrapper img.product_image").click(....

Используйте live:
$j(".tovars_wrapper img.product_image").live('click', function(){...

HETmozgov 04.11.2010 15:35

Помогло :)

Огромное спасибо.

Теперь просьба - если не затруднит объясните, пожалуйста, разницу - принципиально в двух словах.

micscr 04.11.2010 16:07

click - существующим в момент назначения элементам DOM определяются обработчики.
live - создается общий слушатель, который определяет на ком произошло событие, и ему выполняет обработчик.

HETmozgov 04.11.2010 18:06

Понял. Спасибо.


Часовой пояс GMT +3, время: 02:36.