Autor Zpráva
whysper93
Profil
Zdravím,
chtěl bych se zeptat, jestli je nějaká možnost přes jQuery (nebo klidně jen JS) zjistit/získat element, na který bylo kliknuto. Se selektory by to bylo jednoduché jenže potřebuji, aby to vrátilo jakýkoli kliknutý element. Prostě nemůžu použít selektor, jelikož nyní nevím, jaká třída/id/element to bude. Díky
Chamurappi
Profil
Reaguji na whyspera93:
Viz Navigace šipkami na klávesnici, akorát místo stisku klávesy budeš chytat onclick a místo testování tagName budeš dělat… cokoliv chceš dělat.
whysper93
Profil
Děkuji za odpověď. Už jsem to ale vyřešil. Tady je řešení, kdyby jej někdo potřeboval. Jinak můžete klidně toto vlákno smazat :)

$("body").live("click", function(event){
  var element = $(event.target);
});        
Chamurappi
Profil
Reaguji na whyspera93:
Proč live?
whysper93
Profil
IMO kdyby byl element přidán pomocí jquery až po načtení stránky, tak .click by nemuselo vždy fungovat. Live je prostě spolehlivější.
Chamurappi
Profil
Reaguji na whyspera93:
kdyby byl element přidán pomocí jquery až po načtení stránky
Myslíš jako element <body>? Pokud ne, tak to je nesmysl, nepochopils, jak JavaScript funguje.
whysper93
Profil
Aha máš pravdu. Vím jak js funguje. Jen většinou vím, na který element se bude klikat (je tam jiný selector). A body je to blbost - jen jsem prostě už automaticky napsal .live protože už používám jen to.
Chamurappi
Profil
Reaguji na whyspera93:
Vím jak js funguje.
Pak také víš, že každý .live výkonnostně zatěžuje každou dílčí úpravu DOMu, protože se vždy musí vyhodnotit, zda neměla vliv na vybíranou množinu elementů.

automaticky napsal .live protože už používám jen to
Proč?
Kacko
Profil
Chamurappi:
Také používám .live, pokud generuju nové elementy javascriptem. Co je na tom špatného?
Chamurappi
Profil
Reaguji na Kacka:
Je zbytečné a neefektivní přehodnocovat všechny .live selektory při každé úpravě DOMu. Co je na tom dobrého?
Kacko
Profil
Chamurappi:
Jednoduchost zápisu?
_es
Profil
Kacko:
Jednoduchost zápisu?
Myslíš, že to návštevník ocení pri zasekávajúcej sa stránke?
Kacko
Profil
_es:
Stránka se nijak nezasekává, to bych samozřejmě do produkční verze nepustil. Myslím, že pokud je to použito vhodně, tak s tím dnešní běžné PC nemá sebemenší problém. Navíc jQuery je přece celé o jednoduchosti zápisu na úkor výkonu.
Chamurappi
Profil
Reaguji na Kacka:
V čem je ten zápis jednodušší?

pokud je to použito vhodně
To se pozná podle čeho?

tak s tím dnešní běžné PC nemá sebemenší problém
Nebrouzdám jen s PC a na PC nemám otevřenou jen tvojí stránku, ale šedesát dalších.
Kacko
Profil
Chamurappi:
Aha, koukám, že jsem neinformovaný a používám to ze zvyku ze starších verzí jQuery. Předpokládám, že míříš k .on a .delegate?
_es
Profil
Kacko:
Navíc jQuery je přece celé o jednoduchosti zápisu na úkor výkonu.
To platí, len ten zápis vyrába zlý programátor. Pri správnom použití je ten pokles výkonu zanedbateľný či skoro nemerateľný.

Stránka se nijak nezasekává, to bych samozřejmě do produkční verze nepustil.
To to overuješ na všetkých možných kombináciách prehliadačov a strojov ktoré existujú?
Chamurappi
Profil
Reaguji na Kacka:
Nemířím. Oproti čemu ti připadá .live jednodušší?
Kacko
Profil
_es:
Výkonový pokles tam je, přestože zanedbatelý. U větších aplikací je dobře měřitelný, přesto nehraje roli. Stejně tak zatížení klientské stanice při .live je zanedbatelné. Neověřuju to já, ale testeři, kteří hlídají i toto.

Chamurappi:
Přijde mi z hlediska programátora jednodušší a rychlejší použít zápis s .live, než ten event přiřazovat k nově generovaným elementů jakkoliv jinak. Proto .live vznikl.
_es
Profil
Kacko:
Stejně tak zatížení klientské stanice při .live je zanedbatelné.
Na hocijakej stránke a na hocijakom prehliadači a stroji? Pri zachytávaní udalosti pohybu myši na stránke s veľa elementmi a na nejakom staršom prehliadači takýmto spôsobom mám o tom pochybnosti.

Neověřuju to já, ale testeři
A teda tí to už testujú na všetkých možných kombináciách prehliadačov a strojov ktoré existujú?

jednodušší a rychlejší použít zápis s .live, než ten event přiřazovat k nově generovaným elementů jakkoliv jinak
Akokoľvek inak sa to dá aj jednoduchšie, stačí napríklad využiť prebublanie udalosti a veľa iných spôsobov.
Kacko
Profil
_es:
Realita je taková, že testeři to testují na nejpoužívanějších prohlížečích a na záměrně slabých strojích. To, že to 0,1% lídí bude zatěžovat neúměrně procesor je mě jakožto i celé firmě, jakožto i všem jiným firmám ve kterých jsem pracoval a pracuju úplně jedno. Dokonce i pár procent je číslo, které se neřeší.
Nevidím důvod používat probublávání eventů, když se používá jednotně jQuery zápis a stačí napsat .live.
_es
Profil
Kacko:
Nevidím důvod používat probublávání eventů, když se používá jednotně jQuery zápis
Ten „jQuery zápis“ je čo? JQuery je jedna dodefinovaná funkcia, neviem si predstaviť, čo by ten „jQuery zápis“ mal byť. To snáď nejde v jQuery využiť prebublanie udalosti?

pár procent je číslo, které se neřeší.
Možno, no môže sa potom riešiť programátor, ktorý tých pár percent spôsobil.
Kacko
Profil
_es:
:-)

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: