#jquery
#jquery
Вопрос:
Как я могу проверить, чтобы убедиться, что братья и сестры не содержат класс, который я ищу, прежде чем я начну путешествовать по DOM closest()
? Я мог бы сделать это с closest()
siblings()
помощью функций and, но мне интересно, существует ли уже существующая функция jquery, которая позаботилась бы об этом.
Комментарии:
1. Не могли бы вы предоставить какой-нибудь html, чтобы прояснить ваши вопросы?
2. В ближайших документах говорится, что он возвращает текущий элемент, то есть родной брат, если это уместно, что звучит так, как будто это то, что вы хотите. Что плохого в том, чтобы просто вызвать closest() ? Дает ли это вам неправильный результат?
3. Вопрос не ТАКОЙ УЖ и неясный. «убедитесь, что родственные элементы данного элемента не содержат …» было бы понятнее, но пример кода не сильно бы помог.
4. В @Rup ближайших документах говорится: начинается с текущего элемента. Перемещается вверх по дереву DOM, пока не найдет соответствие для предоставленного селектора, возвращаемый объект jQuery содержит ноль или один элемент
5. @Грег Петтит — Спасибо. Мои мысли тоже.
Ответ №1:
Добавьте класс в качестве селектора .siblings()
. Затем проверьте, равен ли размер выделения нулю.
if($(this).siblings('.aRandomClass').length == 0) {
// No sibling with class aRandomClass
} else {
// The length is not zero, so there's a sibling with class aRandomClass
}
Ответ №2:
closest()
просматривает DOM, siblings()
смотрит в обе стороны; Я не верю, что существует какой-либо метод jQuery, который выполняет оба. Вам нужно будет начать с siblings()
(возможно, с .andSelf()
), а затем протестировать length
, чтобы узнать, нужно ли вам проверять closest()
вместо этого.
Комментарии:
1. Это то, чего я пытался избежать, поскольку думал, что есть более элегантный способ сделать это. Но я думаю, что ваш ответ, вероятно, правильный.