Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Problem z metodą animacji animate()
peja1990
post 27.04.2012, 20:43:08
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Witam,
mam pewien problem z animacją.
Pozwolę sobie od razu przedstawić kod prościutkiej funkcji:
  1. function showOptions(e = "div", status = "expand" height = 100) {
  2. // Ustalam wysokość diva
  3. if(!height || height == 0) {
  4. return $(e).children('.options').height();
  5. }
  6. if(status == "expand") {
  7. $(e).children('.options').css('height', '0px').show().animate({
  8. height : '+=' + height // No i tutaj cały problem !
  9. });
  10. }
  11. }


Problem polega na tym, że gdy kilkukrotnie wykonam szybko funkcję (mouseover / mouseout) to wysokość czyli zmienna 'height' zaczyna się powiększać czego nie chcę i w tym cały mój problem...
Wiadomo, że mój problem rozwiązałaby zmiana metody animacji np. na show() ale zależy mi by zostać przy zastosowanej metodzie dlatego proszę Was o pomoc.
Macie jakieś pomysły ?
Z góry bardzo dziękuję.

---
Serdecznie pozdrawiam
Go to the top of the page
+Quote Post
Niktoś
post 27.04.2012, 21:04:40
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


No i widzisz nie lepiej tak od razu,a nie nie chce mi się?
Błędy które zauważyłem:
[JAVASCRIPT] pobierz, plaintext
  1. function showOptions(e = "div", status = "expand" height = 100) {
[JAVASCRIPT] pobierz, plaintext
-chyba trzy parametry powinny być,brak przecinka?Powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. function showOptions(e = "div", status = "expand" ,height = 100) {
[JAVASCRIPT] pobierz, plaintext


if(!height || height == 0) {-tutaj nie za bardzo wiem czy !height w js jest poprawne, czy nie powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. if((height=="undefined") || (height == 0)) {
[JAVASCRIPT] pobierz, plaintext


Ten post edytował Niktoś 27.04.2012, 21:07:51
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 21:08:27
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(Niktoś @ 27.04.2012, 22:04:40 ) *
No i widzisz nie lepiej tak od razu,a nie nie chce mi się?
Błędy które zauważyłem:
[JAVASCRIPT] pobierz, plaintext
  1. function showOptions(e = "div", status = "expand" height = 100) {
[JAVASCRIPT] pobierz, plaintext
-chyba trzy parametry powinny być,brak przecinka?Powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. function showOptions(e = "div", status = "expand" ,height = 100) {
[JAVASCRIPT] pobierz, plaintext


if(!height || height == 0) {-tutaj nie zabardzo wiem czy w !height w js jest poprawne czy nie powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. if((height=="undefined") || (height == 0)) {
[JAVASCRIPT] pobierz, plaintext


No widzisz wink.gif
Okrajałem kod i dlatego też nie zauważyłem braku przecinka ale zobacz sobie na działanie tego prostego kodu:
http://jsfiddle.net/fvzFg/3/

Najedź i zjedź z bloczku kilka razy w szybkim tempie i zobaczysz jaki jest efekt.
Go to the top of the page
+Quote Post
Niktoś
post 27.04.2012, 21:12:47
Post #4





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Odpowiedź prosta ,zobacz:
http://jsfiddle.net/fvzFg/4/
Możesz regulować tempo w animate ,jak chcesz.

Ten post edytował Niktoś 27.04.2012, 21:13:35
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 21:14:40
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(Niktoś @ 27.04.2012, 22:12:47 ) *
Odpowiedź prosta ,zobacz:
http://jsfiddle.net/fvzFg/4/
Możesz regulować tempo w animate ,jak chcesz.


Zmniejszenie czasu trwania animacji biggrin.gif
No tak, a gdybym chciał mieć np. duration 5 sek ? biggrin.gif
Co byś na to poradził ? biggrin.gif


-----------
Daj sobie trochę cierpliwości i przekonaj się, że nie masz racji ;P
http://jsfiddle.net/fvzFg/4/
-----------
500 - w zupełności wystarczy tongue.gif
-----------
Już na 100ms potrafię zajechać kod biggrin.gif
Co Ty na to ? smile.gif

Ten post edytował peja1990 27.04.2012, 21:18:53
Go to the top of the page
+Quote Post
lobopol
post 27.04.2012, 21:18:06
Post #6





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


W jquery masz coś takiego jak .stop co blokuje animacje, na mouse in blokujesz animacje i odpalasz nową, na zejściu blokujesz animacje i odpalasz nową. http://api.jquery.com/stop/


--------------------
Go to the top of the page
+Quote Post
Niktoś
post 27.04.2012, 21:22:00
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Chodzi ci o wywołanie animacji co 5s?Albo skracasz czas,animacji albo odtwarzasz nową uprzedniej nie kończąc, innej rady chyba nie ma-bo logicznie ukończyć odtwarzać animacje, która trwa np 30s co 5s się chyba nie da.
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 21:26:18
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(lobopol @ 27.04.2012, 22:18:06 ) *
W jquery masz coś takiego jak .stop co blokuje animacje, na mouse in blokujesz animacje i odpalasz nową, na zejściu blokujesz animacje i odpalasz nową. http://api.jquery.com/stop/


A jak byś zastosował tę metodę do tego kodu ?
http://jsfiddle.net/fvzFg/4/

Ten post edytował peja1990 27.04.2012, 21:26:29
Go to the top of the page
+Quote Post
lobopol
post 27.04.2012, 21:29:49
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Do tego kodu bym nie stosował bo jest ogólnie rzecz biorąc zły. W linku który dałem masz bardzo dobre przykłady.


--------------------
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 21:40:01
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(lobopol @ 27.04.2012, 22:29:49 ) *
Do tego kodu bym nie stosował bo jest ogólnie rzecz biorąc zły. W linku który dałem masz bardzo dobre przykłady.


Co w takim razie w tym kodzie jest według Ciebie źle ?

Ten post edytował peja1990 27.04.2012, 21:45:14
Go to the top of the page
+Quote Post
lobopol
post 27.04.2012, 21:51:25
Post #11





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Trochę już przysypiający jestem, ale proszę:
-wyważanie muru masz metodę slideup i slidedown
-niepotrzebny live
-dziwne używanie funkcji *jak już bym miał tak robić użyłbym 2)

takie majaki przysypiającej osoby http://jsfiddle.net/fvzFg/5/ ogólnie do poprawki jeżeli mamy użyć to na wielu elementach, ale tylko drobnych (data dodałem bo już nie myślę)


--------------------
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 21:55:59
Post #12





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(lobopol @ 27.04.2012, 22:51:25 ) *
Trochę już przysypiający jestem, ale proszę:
-wyważanie muru masz metodę slideup i slidedown
-niepotrzebny live
-dziwne używanie funkcji *jak już bym miał tak robić użyłbym 2)

takie majaki przysypiającej osoby http://jsfiddle.net/fvzFg/5/ ogólnie do poprawki jeżeli mamy użyć to na wielu elementach, ale tylko drobnych (data dodałem bo już nie myślę)



Dzięki, a ja w tym czasie napisałem coś takiego i też działa smile.gif
http://jsfiddle.net/fvzFg/6/

Czemu live() ?
W tym kodzie nie ma tego co jest w rzeczywistości ;P
W bloku, na który najeżdżasz są jeszcze dwa inne bloku i by funkcja nie wykonywała się w tym przypadku 3 razy tj. w przypadku mouseover(), potrzebujemy metody live() tongue.gif
Go to the top of the page
+Quote Post
Niktoś
post 27.04.2012, 22:05:40
Post #13





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


A próbpwałeś z toggle?
Dzisiaj późno już,ale jutro popatrze z toggle.
Go to the top of the page
+Quote Post
peja1990
post 27.04.2012, 23:06:28
Post #14





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(Niktoś @ 27.04.2012, 23:05:40 ) *
A próbpwałeś z toggle?
Dzisiaj późno już,ale jutro popatrze z toggle.


Już sobie poradziłem wink.gif
351 linijek ładnego i w 100% super działającego kodu czego wynikiem jest ładny skrypcik dynamicznej listy rozwijalnej z opcjami typu checkbox i radio w ładnym stylu smile.gif

Dzięki wszystkim za pomoc !

---
Serdecznie pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 12:11