Domanda

Voglio iterare il linea elementi. A testa linea elemento ha elemento elementi come elementi infantili. Quindi per prima cosa itero sopra linea E poi voglio affrontare un certo elemento Elemento, ad esempio il terzo. Questo è il codice che ho:

$(".pricetable .righttable .line:not(.blank)").each(function(j) {
    var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);
    currentLine.(".item").each(function(k) {
        $(".pricetable .righttable .line .item").eq(i).addClass("active");
    });
});

Il problema è che non so come affrontare l'elemento figlio con il elemento classe.

currentLine.(".item").each(function(k)

Questo non funziona.

Il filtro XML è applicato al valore non xml ({0:#2 = ({}), lunghezza: 1, prevObject: {lunghezza: 3, prevObject: {0:#1 = ({}), contesto:#1# Lunghezza: 1}, Contesto:#1#, selettore: ". Prietable .RightTable .LINE: NOT (.BLANK)", 0:#2#, 1: ({}), 2: ({})}, Contesto:#1#, selettore: ". Picetable .RightTable .LINE: NOT (.BLANK) .Slice (0,1)"}) File: /// C: /USERS/XXX/LIB/PRICETABLE.JS riga 112

Modificare:
Wow, non pensavo di avere una risposta così buona e veloce! Penso di andare con questa soluzione:

$(".pricetable .righttable .line:not(.blank)").each(function(j) {
    $(this).children(".item").eq(i).addClass("active");
});
È stato utile?

Soluzione

$(".pricetable .righttable .line:not(.blank)").each(function(j) {
    var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);
    currentLine.find(".item").each(function(k) {
        $(".pricetable .righttable .line .item").eq(i).addClass("active");
    });
});

http://api.jquery.com/find/

Se sono figli diretti di CurrentLine, dovresti essere solo in grado di farlo children('.item') al posto di find('.item'). Questo si chiama attraversamento del DOM. Visita questa pagina (http://api.jquery.com/category/traversing/) e leggi le descrizioni di alcune delle funzioni lì. Saranno molto utili da tenere a mente se attraversi molto :)

Altri suggerimenti

$('.pricetable .righttable .line:not(.blank)').find('.item').each(function() {
  // this point to child element - item
  // use $(this).addClass('active');
});

Leggero miglioramento prima di rispondere alla tua domanda:

var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);

è facilmente sostituibile con:

var currentLine = $(this);

Secondo, se desideri trovare il 3 ° .item elemento all'interno di $(this), uso .find()

.find(".item:nth-child(3)");

Non c'è bisogno di iterare sulle linee. Se devi iterare sulle righe, allora confronta k a 2 (Come JavaScript conta da 0) e basta.

Se vuoi fare qualcosa con l'ennesimo item di ogni line, è molto più facile di quanto sembri:

var index = 3; // the third "item" element 
$(".pricetable .righttable .line:not(.blank) .item:nth-child(" + index + ")")
  .addClass("active");

Guardalo in azione.

C'è qualcos'altro per cui vuoi fare quanto sopra non è sufficiente?

$(".pricetable .righttable .line:not(.blank)").each(function() {
  $(this).find('.item:nth-child(2)').addClass('active');
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top