Проблемка с jQuery

RaftKorn
На сайте с 20.03.2007
Offline
166
816

Используется у меня вот такой скриптик - http://razorjack.net/quicksand/

И еще к каждой такой картинке применяется скриптик:

$(function(){

$("div.class a").hover(function(){
$(this).children("span.overlay").fadeIn("slow");
}, function() {
$(this).children("span.overlay").fadeOut("slow");
});
});

Проблема в том, что до применения сортировки второй скрипт срабатывает как надо, а после примененя сортировки второй скрипт работать перестает.

Как можно решить проблемку?

Премиум верстка и дизайн под ключ ( https://searchengines.guru/ru/forum/1045270 )
maldivec
На сайте с 04.11.2008
Offline
160
#1

Попробуйте вызывать


$("div.class a").hover(function(){
$(this).children("span.overlay").fadeIn("slow");
}, function() {
$(this).children("span.overlay").fadeOut("slow");
});

повторно после выполнения сортировки, а не только про загрузке странцы. Думается мне, что DOM при сортировке изменяется и описанные функции fadeIn и fadeOut не срабатывают для новых элементов.

ЗЫ, могу ошибаться, jQuery только осваиваю.

RaftKorn
На сайте с 20.03.2007
Offline
166
#2

maldivec, а не подскажете как именно повторно его вызвать?

JTRTA
На сайте с 06.07.2008
Offline
25
#3

$(function(){
$("div.class a").live('hover',function(){
$(this).children("span.overlay").fadeIn("slow");
}, function() {
$(this).children("span.overlay").fadeOut("slow");
});
});

если все правильно понял, должно помочь. хотя с hover live никогда не применял возможно не съест он две функции и придется hover разбивать на два события

Дизайн /ru/forum/493415 (/ru/forum/493415) Верстка от 15$ /ru/forum/509339 (/ru/forum/509339) Сайты под ключ aiogino.studio@gmail.com icq: 460146806
RaftKorn
На сайте с 20.03.2007
Offline
166
#4

Вот пример исполнения скриптов - http://narod.ru/disk/20410577000/1.rar.html

Как мне сказали, дело в том, что элементы не просто прячутся - они пересоздаются. посмотрите DOM модель до и после - количество меняется (не просто display:none), а пересоздавая не копируют функции обработки.

Можно как-то сделать чтоб эти функции копировались?

AlikZP
На сайте с 22.11.2009
Offline
107
#5

Вынесите код в отдельную функцию и выполняйте ее после сортировки.

Например:

function setfade() {

$("div.class a").hover(function(){
$(this).children("span.overlay").fadeIn("slow");
}, function() {
$(this).children("span.overlay").fadeOut("slow");
});
}

$(document).ready(function(){
setfade();
});

function sort() {
Ваш код сортировки
setfade();
}
Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
I
На сайте с 22.12.2006
Offline
33
Ink
#6

Используйте live, как предложил JTRTA. live как раз для таких случаев предназначен.

RaftKorn
На сайте с 20.03.2007
Offline
166
#7

JTRTA, Ink, спасибо большое!

Вот так сделал:


$(function(){
$("div.class a").live('mouseover',function(){
$(this).children("span.overlay").fadeIn("slow");
});
});

$(function(){
$("div.class a").live('mouseout',function(){
$(this).children("span.overlay").fadeOut("slow");
});
});


t0os
На сайте с 25.02.2008
Offline
81
#8

В jQuery 1.4.2 еще как вариант .delegate() можно использовать вместо live.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий