jQuery遍历 - метод end()
Пример
Выберите все абзацы, найдите в них элементы span и верните их в абзацы, а также установите для абзацев красную рамку шириной в два пикселя:
$("p").find("span").end().css("border", "2px red solid");
Определение и использование
Метод end() завершает последнее операцию фильтрации в текущей цепочке и возвращает набор элементов в предыдущее состояние.
Синтаксис
.end()
Подробное описание
Большинство методов遍вания jQuery работают с экземпляром объекта jQuery и создают новый объект, соответствующий набору различных элементов DOM. При этом следует добавить новый набор элементов в стек, поддерживаемый в объекте. Каждый успешный вызов метода фильтрации добавляет новые элементы в стек. Если мы necesitаем старый набор элементов, можно использовать метод end() для извлечения нового набора из стека.
Предположим, что на странице есть пара коротких списков:
<ul class="first"> <li class="foo">элемент списка 1</li> <li>элемент списка 2</li> <li class="bar">элемент списка 3</li> </ul> <ul class="second"> <li class="foo">элемент списка 1</li> <li>элемент списка 2</li> <li class="bar">элемент списка 3</li> </ul>
Пример 1
jQuery особенно полезен при использовании свойств цепочки команд (цепочки команд). Если не использовать команды цепочки, мы обычно вызываем предыдущие объекты через имена переменных, таким образом, мы не нуждаемся в управлении стека. Однако, с помощью end() мы можем串联 все вызовы методов:
$('ul.first').find('.foo').css('background-color', 'red') .end().find('.bar').css('background-color', 'green');
Эта команда цепочки ищет первый список с элементами класса foo и устанавливает им цвет фона в красный. Метод end() возвращает объект в состояние до вызова find(), поэтому第二个 find() ищет '.bar' внутри <ul class="first">, а не '.foo' в списке <li class="foo">, и устанавливает цвет фона для соответствующих элементов в зеленый. В конечном итоге устанавливается цвет фона для элементов 1 и 3 в первом списке, а у элементов второго списка изменений не происходит.
Пример 2
Эта длинная цепочка jQuery может быть визуализирована как структурированный блок кода, метод фильтрации открывает вложенные блоки кода, а метод end() используется для закрытия блоков кода:
$('ul.first').find('.foo') .css('background-color', 'red') .end().find('.bar') .css('background-color', 'green') .end();
Этот end() не обязателен, так как мы随后 будем отбрасывать этот объект jQuery. Однако, если код написан в этой форме, end() может обеспечить визуальную симметрию и упорядоченность программы, по крайней мере, для разработчиков это делает код более читаемым, но代价 - это небольшая потеря производительности из-за дополнительных вызовов.