Autor Zpráva
theNookyn
Profil
Pokouším se vytvořit jednoduchou administraci pro můj web, a mám tám několik jQuery scriptů a tak se chci zeptat jak se dají zkracovat tyto srcipty.

$("textarea").mouseover(function(){
    $("textarea").animate({rows: 20});
});
$("textarea").mouseleave(function(){
    $("textarea").animate({rows: 1});
});

Prosím o všechny možné příklady zjednodušení či zkrácení toho kódu. Předem děkuji.

(Nikde jsem takové téma nenašel.)
Mike8748
Profil
http://api.jquery.com/hover/
Kcko
Profil
Taky to zapisovat takto:
var textarea = $("textarea");


textarea .mouseover(function(){
    $(this).animate({rows: 20});
});
theNookyn
Profil
$("textarea")
    .bind("mouseover", function(){
        $(this).animate({rows: 20});
    })
    .bind("mouseleave", function(){
        $(this).animate({rows: 1});
    });

Toto jsem vysmolil já. Ale zkrácené to tedy moc není.
Mike8748
Profil
theNookyn:
na odkaz do dokumentace jquery si nekoukal co

$("textarea").hover(function() { $(this).animate({rows:20}); },function () { $(this).animate({rows:1}); });
theNookyn
Profil
Koukal, jen jsem to chtěl zkusit posvém.

Díky.
pcmanik
Profil
Kcko:
Ked uz chces ukladat do premennej, tak naco ti je this? Zbytocne vytvaras dalsi jQuery objekt, bohate ti staci znovu pouzit tu premennu ;)
Chamurappi
Profil
Reaguji na pcmanika:
V this je element, na kterém k události došlo, zatímco v proměnné jsou všechny <textarea>.
On i ten původní theNookynův kód fungoval tak, že při najetí na libovolnou <textarea> roztahoval všechny <textarea>.
pcmanik
Profil
Chamurappi:
Ano to je pravda, ja som len vychadzal z toho, co poskytol theNookyn. A nepisal nic o nespravnom fungovani, alebo neocakavanych vysledkoch.
Kcko
Profil
pcmanik:
Za mě se vyjádřil Chamurrapi.

Kód chtěl zkrátit, tak jsem mu chtěl ukázat i návyk slušného programování. (Tj. kešování a jak psal Chamurappi ...)

Navíc nevím proč se na to ptáš zrovna ty, který tady neustále někoho poučuje jak má programovat / kódovat a dosti často tvoje poučování neodpovídá původní otázce zakladatele topicu.


Zkus být radši zdrženlivejší a více přemýšlej, tvoje příspěvky budou mít smysluplnější přínos.
joe
Profil
Čistě teoreticky, nebylo by tohle ještě lepší? (když pominu fakt, že jsem kód prodloužil)

var $textareas = $("textarea");
$textareas.each(function (index, textarea) {
  
  var $textarea = $(textarea);
  $textarea.hover(function () {
    $textarea.animate({rows: 20});
  }, function () {
    $textarea.animate({rows: 1});
  });
  
});
pcmanik
Profil
Kcko:
Prepáč, ale pozrel som si svojich posledných 15 príspevkov a len v jednom mám pocit, že som niekoho osočoval (Z dôvodu, že mi ten kód prišiel až príliš "hlúpy". Teraz je mi jasné že pre mna, ale pre začiatočníka nieje, čo mi je teraz ľúto, že som ho tak osočil a budem si na to dávať pozor.), v ostatných som mal čo povedať k danej téme, alebo ju rovno vyriešiť. Ak je veľa ďalších očividných príspevkov v poslednej dobe, kde niekoho osočujem treba mi to povedať, aby som to nerobil. Nechcem odstrašovať pýtajúcich, alebo nejak inak znižovať úroveň tejto diskusie.
Ak sú ale vo všeobecnosti moje príspevky mylné a zavádzajúce, treba mi to povedať a budem sa pratať z tejto diskusie, nepotrebujem tu zbytočne miasť užívateľov a dávať im zlé rady.

Ano kešovanie je správne, to máš pravdu, ale kedže vychádzam z prvého príspevku, kde theNookyn nemá s daným skriptom problém, len ho chcel optimalizovať. A ako si ho správne naviedol použiť keš, ale aby sa nezmenila funkcionalita jeho kódu, ktorý mu zrejme vyhovuje nakoľko sa nepýta na to, že s ním je niečo v neporiadku je dobre použiť už tú nakešovanú premennú a zbytočne nevytvárať nový jQuery objekt.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0