Autor Zpráva
Gray blogger
Profil *
Aktuálně řeším takový problém. Zavádím funkce na událost click,

function generalWrappersInit(JObj){
 JObj.find(">p input[type='radio']").on("click", function()
      {Wrappers.initiateWrappers(this);});
}

generalWrappersInit to zavede pro určitou sekci. Ale mám sekce, kde chci danou funkci zavést jen pro některé radio inputy. Takže bych potřeboval něco jako

var secA = $("section.a");
WrappersInit(secA, 2,4); // Rozsah hodnoty u radio inputů 2-4

A funkci něco jako
function WrappersInit(JObj, min, max){
 JObj.find(">p input[type='radio',value=min("+min+"),value=max("+max+")]").on("click", function()
      {Wrappers.initiateWrappers(this);});
}

Ale něco jako min() a max() zde nenacházím. Nedá se nějak nadefinovat vlastní funkce?
Kcko
Profil
metoda filter + vlastní logika v callbacku.
Gray blogger
Profil *
Ještě jeden dotaz. Je nějaký selektor, který zabrání tomu, aby JQuery prohledával všechny elementy, ale hledal jen první? Mám formulář kde je více inputů potřebuju získat jen první. Vím, že existuje first() ale ten to odfiltruje až nakonec?
Tomášeek
Profil
Gray blogger:
Nevím, jak je implementován .first(), ty to víš, že filtruje až nakonec? Můžeš použít CSS selektor :first-*.
Gray blogger
Profil *
K druhému dotazu - je to situace, kdy mě vlastně zajímá rodič toho inputu, proto nepotřebuju výpis dalších inputů.


Tomášeek:
Mám něco takového
function Hide(Name){
 var FS = $("fieldset#"+FormInit.FSId);
 var input = FS.find("input."+Name);
 var name = input.attr("name");
 var LineWrapper = input.closest("div");

name je pro všechny radio inputy stejný a LineWraper je společný.
Přijde mi logické, že .first(), když je zařazen až za find tak bude určitě filtrovat až výsledek. Zkusím css selector


Jquery to nerozpoznává

var input = FS.find(":first-* input."+Name);
var name = input.attr(":first-* name");



Už to mám
var input = FS.find("input."+Name+":first");
Tomášeek
Profil
Gray blogger:
Hvězdička je samozřejmě zástupný znak, stačí trochu hledat, že v CSS selektor :first-* neexistuje, ale existuje jich více začínajících first-. Jenže to by někdo nesměl být líný a projevit trochu snahy, že? Nejen tady, celkově dle tvých dotazů zde.
Kcko
Profil
Filtry jsou v JQ obecně pomalé, nikdy jsem je nepoužíval, rozhodně je lepší něco jako $('elementy').eq(0); // pro první
Gray blogger
Profil *
Kcko:
Snažím se to tak dělat, ale eq() je stejný princip, "Reduce the set of matched elements to the one at the specified index." Takže pokud máš zabalených např. 12 radio inputů, tak se nezastaví na prvním, ale bude prohledávat 12 a pak vyfiltruje jeden. Alespoň takto to chápu, zní to logicky.
Keeehi
Profil
Gray blogger:
Ano, a tobě to vadí, že se podívá i na další? Myslím že ne, jen se snažíš o předčasnou optimalizaci. V takovém případě řeš jan ty aktuální problémy, nemusíš si zbytečně přidávat další. :)
Kcko
Profil
Gray blogger:
Jak podotkl Keeehi, snažíš se o předčasnou nebo bůhvíjakou optimalizaci. Nepoznáš to.


Piš kód čitelně i tak, aby ses v tom vyznal někdo jiný nebo i ty za nějakou dobu a optimalizaci řeš až to bude potřeba.
Kajman
Profil
Navíc v jquery dokumentaci je doporučení :first nepoužívat v selektoru, protože to je pomalé...
api.jquery.com/first-selector
Gray blogger
Profil *
Cituji pana Vránu:

"Většina programátorů asi někdy slyšela citát Donalda Knutha: „Předčasná optimalizace je kořenem všeho zla.“ Někdo si to ale bohužel vykládá tak, že na výkonnost aplikace nemusí při návrhu a vývoji vůbec brát ohled a že případné výkonnostní problémy vyřeší až na konci podle toho, co mu řekne profiler. Je to nesmysl zhruba stejný, jako kdybychom aplikaci navrhovali a vyvíjeli bez ohledu na bezpečnost a zabezpečili ji až nakonec podle toho, co nám řekne bezpečnostní audit."

A Jquery ale nic neudělám, když tu optimalizaci zabudovanou nemá, tak to nezoptimalizuju ani kdybych se na hlavu stavěl.
blaaablaaa
Profil
Gray blogger:
Nechci být zbytečně hnusný, ale měl by ses spíš zaměřit na optimalizaci svých znalostí, než mikrooptimalizaci, která není (většinou) potřeba.
Kajman
Profil
Ale pokud chcete optimalizovat rychlost nebo paměťovou náročnost, tak si musíte změřit, co je lepší. Když to uděláte, tipuji, že zjistíte, že :first v jiném selektrou je většinou pomalejší, což je psáno v jquery manuálu.

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