jQuery: как обратиться к подразделению с помощью специального класса

StackOverflow https://stackoverflow.com/questions/7347750

  •  27-10-2019
  •  | 
  •  

Вопрос

Я хочу итерации над линия элементы. Каждый линия Элемент имеет вещь элементы как детские элементы. Так что сначала я перевернул линия А потом я хочу рассмотреть определенный вещь Элемент, например, третий. Это код, который у меня есть:

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

Проблема в том, что я не знаю, как обратиться к детскому элементу с помощью вещь учебный класс.

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

Это не работает.

Фильтр XML применяется к не XML-значению ({0:#2 = ({}), длина: 1, prevobject: {длина: 3, prevobject: {0:#1 = ({}), контекст:#1## , длина: 1}, контекст:#1#, селектор: ". Контекст:#1#, селектор: ".

Редактировать:
Вау, я не думал, что получаю такой хороший и быстрый ответ! Я думаю, что я пойду с этим решением:

$(".pricetable .righttable .line:not(.blank)").each(function(j) {
    $(this).children(".item").eq(i).addClass("active");
});
Это было полезно?

Решение

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

Если они прямые дети Currentline, вы должны просто сделать children('.item') на месте find('.item'). Анкет Это называется Traversing the Dom. Посетите эту страницу (http://api.jquery.com/category/traversing/) и прочитайте описания некоторых функций там. Они будут очень полезны, чтобы помнить, если вы много пересекаете :)

Другие советы

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

Небольшое улучшение, прежде чем я отвечу на ваш вопрос:

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

легко заменяется:

var currentLine = $(this);

Во -вторых, если вы хотите найти 3 -й .item элемент внутри $(this), использовать .find()

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

Нет необходимости повторять по линиям. Если вам нужно перевернуть через линии, просто сравните k к 2 (Как JavaScript считается от 0), и это все.

Если вы хотите что -то сделать с NTH item каждого line, это намного проще, чем выглядит:

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

Увидеть это в действии.

Есть ли что -то еще, что вы хотите сделать, для этого недостаточно?

$(".pricetable .righttable .line:not(.blank)").each(function() {
  $(this).find('.item:nth-child(2)').addClass('active');
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top