Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Metoda, która nic nie robi
SmokAnalog
post
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Witajcie,

czy w jQuery istnieje metoda, która nic nie robi? Śpieszę wyjaśnić o co mi chodzi. Lubię korzystać z mechanizmu łańcuchowania i chciałbym zachować kontekst elementu nawet w sytuacji, kiedy dana metoda może (ale nie musi) być wykonana. Chodzi mi konkretnie o taką sytuację:

[JAVASCRIPT] pobierz, plaintext
  1. $("#element")
  2. .attr("id", "identyfikator")
  3. .addClass("element")
  4. [warunek ? "hide" : "nicNieRob"]()
  5. .appendTo("body")
  6. [warunek ? "fadeIn" : "nicNieRob"]();
[JAVASCRIPT] pobierz, plaintext


Dodaję element do body i w zależności od warunku animacja się odbywa lub nie. Dla pewności, że element nie pojawi się przed płynnym pojawieniem się, ukrywam go. Zamierzony efekt mogę oczywiście łatwo osiągnąć rozbijając kod na cztery części, jednak interesuje mnie bardziej eleganckie rozwiązanie. Co myślicie w ogóle o takiej składni?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. Powinieneś raczej odejść od swojego pomysłu warunkowego wykonywania metody z wykorzystaniem łańcuchowania. Jest to "niestandardowe" rozwiązanie, więc będzie nieczytelne i nieintuicyjne, w żaden sposób nie wpłynie na szybkość wykonywania kodu, ani Twój czas pracy, a będzie mogło być przyczyną wielu problemów. Co w przypadku gdy zależnie od swojego warunku będziesz chciał przekazać do metody różne argumenty? Co jeżeli będziesz musiał raz wykonać jedną, a raz dwie metody?
    [JAVASCRIPT] pobierz, plaintext
    1. $e = $("element").attr("id", "identyfikator").addClass("element");
    2.  
    3. if (warunek) {
    4. $e.hide();
    5. }
    6.  
    7. $e.appendTo("body");
    8.  
    9. if (warunek) {
    10. $e.fadeIn();
    11. }
    [JAVASCRIPT] pobierz, plaintext
    Kod jest dłuższy? Tak, ale co z tego, skoro jest dużo łatwiejszy w czytaniu/utrzymaniu.
  2. Jeżeli jednak uparłbyś się przy swoim rozwiązaniu, musiałbyś samemu utworzyć taką metodę - nie wiem dlaczego nie chcesz "grzebać w prototypach". Jak sam zauważyłeś, metoda taka musiałaby zwracać referencję do this (nie ma potrzeby opakowywania tego ponownie w obiekt jQuery).
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 20:04