Autor | Zpráva | ||
---|---|---|---|
vojja01 Profil * |
#1 · Zasláno: 13. 9. 2013, 16:14:26
Zdravím,
Titulek je trichu těžkopádný, tak se pokusím vysvětlit o co jde; když mám elementy ("sourozence") s nějakou class a atributem for (když nebereme vpotaz správnost vkládání vlastních atributů): <div id="categories"> <div class="category" for="1">dostupné</div> <div class="category" for="2">stažené</div> </div> number = $("#categories .category").length; //počet elementů - 2 for(var i = 0; i <= number; i++) { $("#categories .category[for='"+i+"']").click( function () { //po kliknutí na každého se provede: $("#categories .category[for='"+i+"']").css("", ""); //cokoliv //atd... } ); } PS: úryvek je z jednoho velkého projektu Metroshome, o kterém všichni jednou uslyšíte! :D Ne dělám si srandu :D |
||
Chamurappi Profil |
#2 · Zasláno: 13. 9. 2013, 16:22:59
Reaguji na vojju01:
Viz Lexikální uzávěr. |
||
vojja01 Profil * |
#3 · Zasláno: 13. 9. 2013, 16:55:08
Díky, vím sice o něco víc (což se vždycky cení), ale teď to pro změnu funguje pouze pro první element. Pro ten druhý to vůbec nezaregistruje ani událost onclick.
|
||
pcmanik Profil |
#4 · Zasláno: 13. 9. 2013, 18:32:53
vojja01:
A nebolo by lepšie na rodičovi odchýtavať kliknutia? Budeš tak mať jeden event handler namiesto 2, resp. Koľko potomkov budeš mať. |
||
joe Profil |
vojja01:
1. Chybí ti před number ještě var .
2. Můžeš to celé udělat zápisem využívající jQuery: $("#category .categories").each(function () { var category = $(this); category.click(function () { alert(category.attr("for")); }); }); 3. Lepším řešením bude používat jen jedno odchytávání události $("#category").on("click", ".category", function () { var category = $(this); alert(category.attr("for")); }); 4. Používáš dvakrát vytváření stejného objektu se stejným selektorem $("#categories .category[for='"+i+"']") , to je zbytečné.
|
||
pcmanik Profil |
joe:
Nezdá sa ti že v treťom riešení vytváraš zbytočné ďalšie odchytávanie udalosti? Veď v this už máš toho potomka na ktorý bolo kliknuté. Resp. po kliknutí sa ešte len priradí ďalšia odchytávanie kliknutia a až na následné kliknutie vyskočí alert. $("#category").on("click", ".category", function () { alert($(this).attr("for")); }); |
||
joe Profil |
#7 · Zasláno: 13. 9. 2013, 20:40:25
pcmanik:
Samozřejmě, (zkopíroval jsem dvojku a pak to uvnitř zapomněl upravit) opravil jsem, díky. |
||
Časová prodleva: 11 let
|
0