konto usunięte

Temat: live() i bubbling

W sumie nie udalo mi sie znalezc jeszcze odpowiedz na moj problem


jQuery('.topFeatures .MFGswitcher div').live('mouseenter mouseleave', function(event) {
switch(event.type) {
case 'mouseover':
jQuery(this).children('span.on').fadeIn(200);
break;
case 'mouseout':
jQuery(this).children('span.on').fadeOut(200);
break;
}
});


Generalnie rzecz biorac, mam jakiegos DIVa, w srodku ze SPANem.
Najezdzasz myszka na diva i ladnie pojawia sie ten ukryty span.
Problem polega na tym ze sa 4 obok siebie i jak przejedziesz kilka razy po nich myszka, to zaczynaja sobie wszystkie mrugac :) A nie jest to cos, czego mi trzeba....

Jak to rozwiazac?
W normalnym przypadku mozna po prostu do animacji dodac stop() i zalatwia to sprawe by dany SPAN nie ujawnil sie w calosci, jak ktos z niego szybko myszke zabierze i ladnie animuje sie "do tylu, ale takie cos nie dziala juz w przypadku livowego dodawania eventow.Andrzej Winnicki edytował(a) ten post dnia 16.09.10 o godzinie 16:59
Bartek Stańkowski

Bartek Stańkowski front-end & mobile
web developer

Temat: live() i bubbling

stop() nie tyle nie działa z live(), co nie sprawdza się z fadeIn() i fadeOut(). Jeśli by zamienić fadeIn(200) na fadeTo(200, 1), a fadeOut(200) na fadeTo(200, 0), to stop() powinien działać jak trzeba.

konto usunięte

Temat: live() i bubbling

Bartek Stańkowski:
stop() nie tyle nie działa z live(), co nie sprawdza się z fadeIn() i fadeOut(). Jeśli by zamienić fadeIn(200) na fadeTo(200, 1), a fadeOut(200) na fadeTo(200, 0), to stop() powinien działać jak trzeba.

Wedlug jQuery manual - mozna...
Ale nie to bylo glownym pytaniem :)
Bartek Stańkowski

Bartek Stańkowski front-end & mobile
web developer

Temat: live() i bubbling

Ale, jeśli dobrze rozumiem, to jest rozwiązanie opisanego problemu. ;) Użycie stop() + fadeTo() zapobiega temu mruganiu.

bez stop i fadeIn/fadeOut
http://jsbin.com/ohoqe/3

stop() + fadeTo()
http://jsbin.com/ohoqe/2

A może mam gorączkę wyższą niż myślałem i jednak powinienem się położyć. ;)

Temat: live() i bubbling

Można jeszcze fadeIn/fadeOut zastąpić przez animate z parametrem queue: false, i żadnymi stopami martwić się nie trzeba..

konto usunięte

Temat: live() i bubbling

Dobra.... dzieki!
Obydwa rozwiazania dzialaja :)

Bartku, w twoim przypadku nie zauwazylem ze uzyles fadeTo a zamiast In czy Out :)
A drugiego rozwiazania z queue:false nie znalem ;)
baaa czlowiek sie uczy cale zycie.... bo mnie draznilo to lekko juz na stronce ;)

Tak czy siak, dzieki za pomoc bo odywa rozwiazania sugeruja jedno - MUSZE DOKLADNIEJ CZYTAC MANUALA :)Andrzej Winnicki edytował(a) ten post dnia 16.09.10 o godzinie 19:38
Bartek Stańkowski

Bartek Stańkowski front-end & mobile
web developer

Temat: live() i bubbling

Metod w jQuery jest tyle, że trudno wszystkie znać i o nich pamiętać. :)
A jest jeszcze dequeue(), użyte zamiast stop() też powinno zadziałać. ;)

Temat: live() i bubbling

Metoda z animate i wyłączeniem kolejkowania ma ten +, że podajesz dla animate jeden parametr i zawsze animacja będzie "ustępliwa".
stop() i dequeue() są metodami (nazwałbym je nawet niestatycznymi), dlatego istnieje konieczność wskazania elementu przy pomocy selektora, dla każdej akcji wykonywanej na nim. To oznacza, że ile zależnych eventów, tyle odwołań do elemntu i użyć w.w. metod. "Write less do more" ;)

A gdy zajdzie potrzeba wykonanie czegoś po zakończeniu pełnej animacji - można użyć callbacku.

A co do ilości metod - moim skromnym zdaniem nie jest ich dużo, to raczej kwestia tego, iż dany cel można osiągnąć przy użyciu wielu możliwych ich kombinacji, co niejako przygasa w człowieku potrzebę szukania nowych sposobów i kombinowania ;)Marcin Kubala edytował(a) ten post dnia 17.09.10 o godzinie 11:58

Następna dyskusja:

jquery.live - load?




Wyślij zaproszenie do