Как получить дочерние элементы селектора $(this)?
У меня есть макет, похожий на этот, и я хотел бы использовать селектор jQuery
для того, чтобы выбрать дочерний элемент img
внутри div
при клике на него.
<div id="...">
<img src="...">
</div>
Чтобы получить div
, я использую следующий селектор:
$(this)
Как я могу получить дочерний элемент img
с помощью селектора?
5 ответ(ов)
Вы также можете использовать
$(this).find('img');
что вернёт все элементы img
, являющиеся потомками данного div
.
Если вам нужно получить первый элемент img
, который находится на одном уровне вниз от текущего элемента, вы можете использовать следующий код:
$(this).children("img:first")
Этот код выберет первого дочернего элемента img
, который является прямым ребенком элемента, на который ссылается this
.
Если ваш тег <div>
непосредственно следует за тегом <img>
, вы также можете использовать:
$(this).next();
Этот код позволит вам получить следующий элемент после текущего, если он соответствует тегу <img>
. Это может быть полезно в ситуациях, когда необходимо манипулировать этим изображением или его свойствами.
Прямые дочерние элементы можно получить с помощью следующего jQuery-селектора:
$('> .child-class', this)
Здесь $('> .child-class', this)
выбирает все элементы с классом child-class
, которые являются непосредственными дочерними элементами текущего элемента (this
). Знак >
указывает на то, что мы выбираем только тех детей, которые находятся на первом уровне вложенности.
Вопрос: Как сослаться на дочерние элементы в jQuery? Я обобщил это в следующем коде jQuery:
$(this).find("img"); // любой дочерний или внучатый элемент img и т.д.
$(this).children("img"); // любой дочерний элемент img, который является прямым потомком
$(this).find("img:first"); // любой первый дочерний элемент img или первый внучатый элемент и т.д.
$(this).children("img:first"); // первый дочерний элемент img, который является прямым потомком
$(this).children("img:nth-child(1)"); // img, который является первым дочерним элементом прямого потомка
$(this).next(); // следующий элемент (если это img, то это будет первый дочерний элемент прямого потомка)
Ответ: В вашем коде вы правильно показали несколько способов обращения к дочерним элементам в jQuery. Вот краткий обзор каждой из строчек:
$(this).find("img");
- ищет все элементыimg
, которые являются дочерними или внучатыми по отношению к текущему элементу.$(this).children("img");
- выбирает только те элементыimg
, которые являются непосредственными дочерними элементами.$(this).find("img:first");
- находит первый элементimg
, включая всех потомков.$(this).children("img:first");
- выбирает первого дочернего элементimg
, который является непосредственным потомком.$(this).children("img:nth-child(1)");
- находит первый прямой дочерний элемент (необходим элемент имеет индекс 1).$(this).next();
- возвращает следующий элемент на том же уровне, что и текущий. Если вы ожидаете, что это будетimg
, убедитесь, что он действительно есть.
В зависимости от того, что именно вам нужно — все потомки или только непосредственные, — вы можете использовать соответствующие методы. Надеюсь, это поможет!
Как узнать, какая радиокнопка выбрана с помощью jQuery?
Получение выбранного текста из выпадающего списка (select) с помощью jQuery
Как выбрать элемент по имени с помощью jQuery?
Выбор и манипуляция псевдоэлементами CSS ::before и ::after с помощью JavaScript (или jQuery)
jQuery: Получение текста конкретного тега option