После выполнения операции скрипт перестает работать
Приветствую всех
Есть сайт 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, время: 09:43. |