Autor Zpráva
japlavaren
Profil
Dobry den,

mam tabulku typu
<table>
<thead>
<tr><th><input type="checkbox" class="checkAll" /></th></tr>
</thead>
<tbody>
<tr><td><input type="checkbox"></td></tr>
<tr><td><input type="checkbox"></td></tr>
<tr><td><input type="checkbox"></td></tr>
</tbody>
</table>


a potrebujem, aby horny checkbox zaskrtol vsetky checkboxy ALE len v ramci tabulky, dostal som sa po nieco taketo:

<script>
$('.checkAll').change(function(){
    $(this).parents('table').css('background-color', 'red');//('input[type=checkbox]').attr('checked', $(this).attr('checked'));
});
</script>


kde mi ofarbi bunky v tabulke na cervenu. bohuzial netusim ako to spravit, aby to fungovalona tu podmienku v komente - na vsetky inputy danej tabulky.

Dakujem, j
Kcko
Profil
http://jquery.jslab.net/zkousecka/#55ce8224a38443169a3a2b225ed665e6
Chamurappi
Profil
Reaguji na Kcka:
$(this).parents("table").find("input[type=checkbox]")
Stejně jako minule — bude-li mít v sobě víc tabulek (což u složitějšího formuláře hrozí), přepne tím všechna zaškrtávátka v té nejnadřazenější z nich. Pokud je řeč o jedné tabulce, zajímá ho jen parent.
Kcko
Profil
Chamurappi:
Jistě mistře
http://jquery.jslab.net/zkousecka/#ffb7babcbdad90fa52de9e85db6c621a
japlavaren
Profil
Dakujem
Chamurappi
Profil
Reaguji na Kcka:
Když píšu v sobě, myslím tím v sobě. Co na tom nechápeš?
Kcko
Profil
Chamurappi:
Aha a další extrémně speciální případ bys neměl? :D třeba něco s neukončeným tagem atp. Nebud směšný prosímtě.
Pokud ty používáš zanořené tabulky v pořádku ...
joe
Profil
Kcko:
Zklamu tě, ale podobné vnořování tabulek je ve složitějších formulářích normální.
Kcko
Profil
joe:
Jak u koho ...
Chamurappi
Profil
Reaguji na Kcka:
To je naprosto normální situace, nic extrémního na ní není. K práci se všemi checkboxy uvnitř všech nadřazených tabulek není vůbec žádný důvod.

Pokud ty používáš zanořené tabulky v pořádku …
Tam, kde jsou vhodné, je samozřejmě používám.
To „s“ tam dáváš navíc, abys autora stránky vyučil, že nemá používat zanořené tabulky? To se vymyká zadání.
Kcko
Profil
Chamurappi:
A to co jsi mu poradil Ty, že má použít parent snad funguje?
joe
Profil
Chamurappi:
Právě dělám s formulářema něco podobného, sice ne přímo zaškrtávání checkboxů, ale používám parents v jQuery. Jseš si jistý, že parent lze zapsat místo parents? Protožě mně to tak nefunguje, mám zhruba takovou strukturu:

<table>
<tr>
  <td>...</td>
  <td><div><a></a></div>
</tr>


Ze zvýrazněného odkazu potřebuju zjistit zvýrazněný řádek. Při použití parents('tr') to jde, při použití parent('tr') už ne.
Chamurappi
Profil
Reaguji na Kcka:
Hm, očividně ne. To je pro změnu dobrá připomínka. Koukám, že parent s jedním argumentem funguje tím nejméně použitelným způsobem.
Takže bych buď smyčkou projel parenty, dokud bych nenarazil na tabulku, nebo bych použil parents("table:first"). Pracovat naráz se všemi rodiči stejného jména je chyba — u tabulek možná méně zjevná, u <div>ů by byla nepřehlédnutelná.


Reaguji na joa:
Jseš si jistý, že parent lze zapsat místo parents?
Nejsem.

Ze zvýrazněného odkazu potřebuju zjistit zvýrazněný řádek.
I kdybych chtěl používat jQuery, napsal bych to takhle:
var řádek = this;
while(řádek && řádek.tagName != "TR") řádek = řádek.parentNode;
$(řádek).nějakáJQueryovost(); // atd.
Kcko
Profil
Chamurappi:
Hm, očividně ne. Koukám, že parent s jedním argumentem funguje tím nejméně použitelným způsobem.

Ano, proto jsem mu poradil parents, protože v jeho kódu žádné zanořené tabulky nejsou ani takový náznak nebyl. Kdyby byly, nebo bych náznak vycítil, napsal bych jinou variantu.

joe:
A ty to měj tak jak jsi napsal, protože když už jquery používáš, tak ho se vším všudy. Rozhodně ně to co Ti doporučil osvícený v javascriptu, který se také dokáže splést [#3] Chamurappi

Hezký večer oboum, mám práci, reagovat už dnes nebudu.

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