Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как указать JQuery-объекту для поиска селектор, который начинается с дочернего элемента?

aaa bbb Ученик (77), закрыт 4 года назад
Есть такой код:
https://jsfiddle.net/ucj89bLe/

В нем вот эта строчка работает:
$wrapper.children('.item').children('.children').children('.item:nth-of-type(1)').css('background-color', 'green');

Но мне кажется, что можно сделать все куда более оптимизированнее, поскольку здесь для достижения цели используется 4 функции. Разве нельзя все сделать через 2?

Проблема в том, что нужно указать для $wrapper селектор, который будет начинаться с дочернего элемента. Что-то типа такого (но это не работает):
$wrapper.find('.item > .children > .item:nth-of-type(1)').css('background-color: green');
или
$wrapper.children('.item > .children > .item:nth-of-type(1)').css('background-color: green');

Как мне это сделать?
Лучший ответ
♫…Минор…♫ Мудрец (12378) 4 года назад
$(`.${$wrapper[0].className} > .item > .children > .item:nth-of-type(1)`).css('background-color', 'green');
aaa bbbУченик (77) 4 года назад
А если у меня много таких элементов на странице? В смысле, с таким className. Тогда работать не будет.
♫…Минор…♫ Мудрец (12378) много wrapper'ов?
Остальные ответы
Elepsis Eclipse Оракул (64086) 4 года назад
Даже если бы селекторы были правильными, синтаксис css(...) перепутан.

Не легче ли так?

$('.wrapper > .item > .children > .item:nth-of-type(1)').css("background-color", "green");

https://jsfiddle.net/OPTlMUS/5ymw6aqb/

Или так, или самый короткий вариант - кажется ваш, рабочий.
Можно упростить себе задачу, чуть поменяв названия классов)

Если искать комбо-селектором среди children - не знаю, что там на самом деле произойдет, но если элемент и найдется - он же всё равно не окажется дочерним.

P.s.

css("color", "red");

Через запятую, когда один... и двоеточия, когда объект:

css({
  "color": "red",
  "background-color": "white",
  "width": "100px",
})
Dedarus Мыслитель (5109) 4 года назад
Сделать нормальную структуру классов, чтобы можно было напрямую обращаться к блоку
Похожие вопросы