Autor Zpráva
Miri
Profil *
Ahoj, takový rychlý dotázek. Nemůžu se ale nějak dohledat i když bych asi měl.

Dejme tomu že mám takový to html
<div> // první stupeň
  <div></div>  //druhý stupeň
  <div> //druhý stupen
      <div></div>   //třetí stupeň
      <div></div>   //třetí stupeň
  </div>
  <div> //druhý stupen
      <div></div>   //třetí stupeň
      <div></div>   //třetí stupeň
  </div>
</div>

A ptám se jak vyberu pomocí jquery všechny divy druhého stupně a zároveň všechny sudé nebo liché?

zkoušel jsem toto a nejde, nejspíš jsem to špatně pochopil.
  $("div > div:odd")...

Předem díky za odpověd Míra
Kcko
Profil
Miri:
Je to dobře. Co konkrétně Ti nefunguje?
Jestli s nimi potřebujes provést nějakou akci, se všemi tak poté přes each ..

$("div > div:odd").each(function(index){

var div = $(this);

console.log(div.attr("id")); // např.

});
Miri
Profil *
Změnil jsem to na toto:
$("#prehled > tr:even").each(function(index){
    $(this).addClass("trsude");
});

Ale stále se mi do těchto řádků neukládá class. Nemůže to být tím #prehled ?
Kcko
Profil
Hod sem nebo na pastebin kompletní HTML kód (resp onen kód kde se to má vykonávat).
Chamurappi
Profil
Reaguji na Miriho:
Je-li #prehled tabulka, tak <tr> není jejím přímým potomkem. Uvnitř každé tabulky je ještě <tbody> (které má nepovinné obě značky). Buď nepoužívej selektor přímého potomka, nebo uprav selektor na "#prehled > tbody > tr:even".

Mimochodem, v normálním HTML DOMu jsou všechny řádky tabulky v kolekci rows (nehledě na skupiny řádků <tbody>, <thead>, <tfoot>). Příštup přes selektory je méně pohodlný, protože buď musíš postupovat i přes skupiny řádků, nebo vybrat současně <tr> do libovolné úrovně zanoření. V případě vybírání sudých/lichých řádků je jQuery navíc ještě méně efektivní, protože se v novějších prohlížečích nepoužívají nativní hledací metody. Napsal bych to asi takto:
var prehled = document.getElementById("prehled");
for(var i = 1, row; row = prehled.rows[i]; i+=2)
  row.className += " trsude";
Totéž s příchutí jQuery:
var prehled = $("#prehled")[0];
for(var i = 1, row; row = prehled.rows[i]; i+=2)
  $(row).addClass("trsude");
Nebo s $.each:
$.each($("#prehled")[0].rows, function(i)
{
  if(i % 2) $(this).addClass("trsude");
});

Pokud tvá tabulka není sestavována či přerovnávána v prohlížeči, tak je nesmysl stylovat řádky JavaScriptem, o přidělení třídy by se měl postarat už server.
Miri
Profil *
Chamurappi:
Super krásně to funguje !
Pokud tvá tabulka není sestavována či přerovnávána v prohlížeči, tak je nesmysl stylovat řádky JavaScriptem, o přidělení třídy by se měl postarat už server.
Právě že jsou přidávány řádky do tabulky.

Díky za pomoc

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