Статьи

Совет: легкая последовательная анимация в jQuery

В этом видео-кратком совете я продемонстрирую простой способ обеспечить последовательную анимацию бесконечного числа элементов. Первоначально я изучил эту технику у Дэйва Метвина , но не думаю, что многие люди знают об этой изящной маленькой хитрости.


Мы хотим отфильтровать бесконечное количество элементов на странице, соответствующих какому-либо селектору, а затем заставить их последовательно исчезать.

1
2
3
4
5
<body>
  <p>Watch</p>
  <p>Me</p>
  <p>Disappear</p>
</body>

Мы начинаем с «кэширования» всех абзацев на странице, обернутых в объект jQuery (var paras). Мы также создаем переменную итератора — i . Этот итератор позволяет нам нацеливаться на каждый новый элемент абзаца, не зная заранее конкретной длины объекта paras .

Внутри самовывозной анонимной функции мы получаем первый абзац на странице с «paras [i]» … Но мы хотим увеличить i на единицу для каждой итерации. Таким образом, при следующем вызове выборки он будет ссылаться на следующий элемент в упакованном наборе. Итак, мы должны быть уверены, что напишем paras [i ++] . Затем достаточно просто вызвать fadeout и передать arguments.callee в качестве функции обратного вызова, чтобы обеспечить рекурсию. Это будет равно функции, в которой оно содержится; таким образом, мы говорим «промой и повтори!»

Если по какой-то причине вы используете jQuery 1.3 или более раннюю версию, вам нужно указать, что должно произойти, когда paras [i] равен элементу, который не существует. В более старых версиях jQuery он возвращает ошибку «undefined». Чтобы компенсировать это, мы передаем $ (paras [i ++] || [] ), чтобы указать, что, если элемент не существует, мы вместо этого оборачиваем пустой массив, чтобы избежать ошибок.

Следует отметить, что, начиная с jQuery 1.4, в этом нет необходимости, поскольку вместо этого jQuery будет возвращать объект jQuery.

  • Подпишитесь на нас в Твиттере или подпишитесь на ленту Nettuts + RSS для получения лучших учебных материалов по веб-разработке.