Frage

Ich möchte über die iterieren Linie Elemente. Jeder Linie Element hat Artikel Elemente als Kinderelemente. Also zuerst ich iteriere Linie Und dann möchte ich eine bestimmte ansprechen Artikel Element, zB der dritte. Dies ist der Code, den ich habe:

$(".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");
    });
});

Das Problem ist, dass ich nicht weiß, wie ich das Kinderelement mit dem ansprechen soll Artikel Klasse.

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

Das funktioniert nicht.

XML-Filter wird auf den Non-XML-Wert angewendet ({0:#2 = ({}), Länge: 1, PrevObject: {Länge: 3, PrevObject: {0:#1 = ({}), Kontext:#1# , Länge: 1}, Kontext:#1#, Selektor: ". Kontext:#1#, Selektor: ".

Bearbeiten:
Wow, ich hätte nicht gedacht, dass ich eine so gute und schnelle Antwort bekommen habe! Ich glaube, ich gehe mit dieser Lösung:

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

Lösung

$(".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/

Wenn sie direkte Kinder von Currentline sind, sollten Sie einfach in der Lage sein, dies zu tun children('.item') anstelle von find('.item'). Dies nennt man das Dom. Besuchen Sie diese Seite (http://api.jquery.com/category/traversing/) und lesen Sie die Beschreibungen einiger der Funktionen durch. Sie werden sehr nützlich sein, um zu beachten, wenn Sie viel durchqueren :)

Andere Tipps

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

Leichte Verbesserung, bevor ich Ihre Frage beantworte:

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

ist leicht zu ersetzen durch:

var currentLine = $(this);

Zweitens, wenn Sie den 3. finden möchten .item Element innerhalb von $(this), verwenden .find()

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

Keine Notwendigkeit, über die Linien zu iterieren. Wenn Sie über die Linien iterieren müssen, vergleichen Sie einfach k zu 2 (Wie JavaScript von 0 zählt) und das war's.

Wenn Sie etwas mit dem N -ten machen möchten item von jedem line, Es ist viel einfacher als es aussieht:

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

Sehen Sie es in Aktion.

Gibt es noch etwas, das Sie tun möchten, für das das oben genannte nicht ausreicht?

$(".pricetable .righttable .line:not(.blank)").each(function() {
  $(this).find('.item:nth-child(2)').addClass('active');
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top