Pregunta

Quiero iterar sobre el línea elementos. Cada línea El elemento tiene artículo elementos como elementos infantiles. Así que primero ito línea Y luego quiero abordar un cierto artículo elemento, por ejemplo, el tercero. Este es el código que tengo:

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

El problema es que no sé cómo abordar el elemento infantil con el artículo clase.

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

Esto no funciona.

El filtro XML se aplica al valor no xml ({0:#2 = ({}), longitud: 1, previoBject: {longitud: 3, PrevObject: {0:#1 = ({}), context:#1# , longitud: 1}, contexto:#1#, selector: ". Pricetable .righttable .line: no (.blank)", 0:#2#, 1: ({}), 2: ({})}, contexto:#1#, selector: ". Pricetable .RightTable .line: no (.Blank) .slice (0,1)"}) archivo: /// c: /users/xxx/lib/pricetable.js línea 112

Editar:
¡Vaya, no pensé que obtenía una respuesta tan buena y rápida! Creo que voy con esta solución:

$(".pricetable .righttable .line:not(.blank)").each(function(j) {
    $(this).children(".item").eq(i).addClass("active");
});
¿Fue útil?

Solución

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

Si son hijos directos de la línea actual, deberías poder hacer children('.item') en lugar de find('.item'). Esto se llama atravesar el DOM. Visite esta página (http://api.jquery.com/category/traversing/) y lea las descripciones de algunas de las funciones allí. Serán muy útiles para tener en cuenta si atraviesas mucho :)

Otros consejos

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

Ligera mejora antes de responder a su pregunta:

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

es fácilmente reemplazable con:

var currentLine = $(this);

Segundo, si desea encontrar el 3er .item elemento dentro de $(this), usar .find()

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

No hay necesidad de iterar sobre las líneas. Si debe iterar sobre las líneas, simplemente compare k a 2 (Como JavaScript cuenta desde 0) y eso es todo.

Si quieres hacer algo con el enésimo item de cada line, es mucho más fácil de lo que parece:

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

Véalo en acción.

¿Hay algo más que quieras hacer que lo anterior no sea suficiente?

$(".pricetable .righttable .line:not(.blank)").each(function() {
  $(this).find('.item:nth-child(2)').addClass('active');
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top