jQuery: как обратиться к подразделению с помощью специального класса
-
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");
});
});
Если они прямые дети 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');
});