Селекторы jQuery: выберите два элемента и все элементы между ними
У меня есть LI внутри UL, и каждый из них имеет уникальный идентификатор.
Учитывая два идентификатора, какой лучший способ выбрать два соответствующих LI и все LI между ними?
Спасибо!
Ответы
Ответ 1
http://api.jquery.com/nextUntil/
Учитывая выражение селектора, которое представляет собой набор элементов DOM, метод .nextUntil()
выполняет поиск через последователей этих элементов в дереве DOM, останавливаясь, когда он достигает элемента, согласованного аргументом метода. Новый возвращаемый объект jQuery содержит все следующие братья и сестры, но не включая тот, который соответствует аргументу .nextUntil()
.
Если селектор не согласован или не указан, будут выбраны все следующие братья и сестры; в этих случаях он выбирает те же элементы, что и метод .nextAll()
, когда не предусмотрен селектор фильтра.
Начиная с jQuery 1.6, объект DOM node или jQuery вместо селектора может быть передан методу .nextUntil()
.
Этот метод необязательно принимает выражение для второго аргумента. Если этот аргумент предоставлен, элементы будут отфильтрованы, проверяя, соответствуют ли они ему...
Ответ 2
Вы можете сделать это следующим образом:
$('#id').nextUntil('#id2').andSelf().add('#id2')
Важно отметить, что .nextUntil()
содержит не элемент, который будет продолжаться до тех пор, пока он не остановится перед ним. Чтобы добавить этот элемент, вам нужно вызвать .add(selector)
в конце.
Вам также понадобится .andSelf()
, чтобы включить первый элемент
Обновление августа 2017 года
Метод jQuery .andSelf()
теперь устарел в jQuery 1.8+, используйте .addBack()
, чтобы добавить первый отбор назад. Кроме того, .prevUntil()
можно использовать, если последний элемент (# id2) перенести первый элемент (# id1) в выделение. Сравните .index()
для обоих элементов, чтобы определить их порядок в документе.
Ответ 3
Чтобы выбрать все LI между интервалами UL
$(document).ready(function(){
$("li[ID*=ids]").css("bacground-color","red");// contian common world ex ids1
});