Autor Zpráva
joe
Profil
Ahoj,

trochu teoretická otázka, řekněme, pokud se pracuje s jQuery, je dobré si v paměti uchovávat jQuery objekty DOM elementů a nebo je vytvářet při používání znovu a znovu?

Například:

var Application = {
  document: $(document),
  html: $(document.documentElement),
  body: $(document.body)
};

Application.foo = function () {
  Application.html.addClass("js");
};

versus

var Application = {};

Application.foo = function () {
  $(document.documentElement).addClass("js");
};
Jan Tvrdík
Profil
joe:
Pamatovat si je bude rychlejší, ale paměťově náročnější, což je ti předpokládám jasné :) Osobně většinou volím variantu vyšší rychlosti. Pochopitelně má cenu si pamatovat především elementy, které očekáváš, že se budou používat často. Taky hraje podstatný rozdíl, jestli jenom konvertuješ „DOM Element“ na „jQuery element“ nebo zda ten DOM element musíš nejprve nějakým selektorem najít.
joe
Profil
Jan Tvrdík:
Pravda, nevhodně jsem se zeptal :) Ono je to taky jak kdy, někdy DOM element znám (html, body, ale třeba i this v události), jindy ho hledám v DOMu pomocí jQuery, jen mi prostě přijde někdy až nelogické si to držet stále v paměti, nerad bych třeba někdy udělal web, který když nechám dlouho otevřený v záložce v prohlížeči, stane se, že mi kvůli tomu zasekne prohlížeč - třeba Facebook :)
Záleží tedy asi na situaci. Díky za odpověď.
_es
Profil
joe:
nerad bych třeba někdy udělal web, který když nechám dlouho otevřený v záložce v prohlížeči, stane se, že mi kvůli tomu zasekne prohlížeč
Premenná, obsahujúca nejaký existujúci DOM objekt v dokumente, obsahuje len pár bajtov, takže nadmerné obsadenie pamäte takmer nehrozí. Niečo iné je premenná, odkazujúca na DOM objekt z dokumentu vyňatý - ak naň existuje odkaz, nemôže byť z pamäte odstránený. Tam je jedno, či je ten odkaz priamo na DOM element, či sprostredkovane cez 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:

Prosím používejte diakritiku a interpunkci.

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

0