jQuery ближайший () после того, как братья и сестры возвращают 0

#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. Это то, чего я пытался избежать, поскольку думал, что есть более элегантный способ сделать это. Но я думаю, что ваш ответ, вероятно, правильный.