Как получить дочерние элементы селектора $(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 селекторы для пользовательских атрибутов данных с использованием HTML5
Как использовать регулярные выражения в селекторах jQuery?
Проверка, отмечен ли чекбокс, с помощью jQuery