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