| 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: 13 let
|
|||
0