После выполнения операции скрипт перестает работать
Приветствую всех
Есть сайт 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"); } }); |
Из-за этой строки
$j(".tovars_wrapper .tovar_info").fadeOut("fast"); нормально вначале вообще не работает. Скорее всего вы не знаете что анимация идет параллельно, а не ждет выполнения предыдущей(если специально не указывать). Совет:Обратите внимание на 2-й параметр функции fadeOut. |
Спасибо за замечание.
Действительно не знал... Исправил: $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 решения либо найти что перекрывает либо просто перегружать страницу при каждом добавлении товара. |
вместо click
$j(".tovars_wrapper img.product_image").click(.... Используйте live: $j(".tovars_wrapper img.product_image").live('click', function(){... |
Помогло :)
Огромное спасибо. Теперь просьба - если не затруднит объясните, пожалуйста, разницу - принципиально в двух словах. |
click - существующим в момент назначения элементам DOM определяются обработчики.
live - создается общий слушатель, который определяет на ком произошло событие, и ему выполняет обработчик. |
Понял. Спасибо.
|
Часовой пояс GMT +3, время: 03:35. |