Как связанные функции выполняются в JQuery? - PullRequest
6 голосов
/ 05 февраля 2010

Когда функция связана в JQuery, каков порядок операций?

Пример 1

$(selector).fun1(val,{fun2(){ }}

Пример 2

$(selecter).fun1().fun2().fun3() 

Ответы [ 3 ]

8 голосов
/ 05 февраля 2010

Слева направо. fun3() выполняется для результата (= возвращаемого значения) fun2(), fun2() для результата fun1().

Этот вид цепочки может быть выполнен в JQuery, потому что каждая цепочечная функция возвращает объект / элемент, для которого она была вызвана.

Итак, $(selector).fun1() возвращает элемент $(selector) после выполнения. fun2() вызывается из этого возвращаемого элемента и т. Д.

6 голосов
/ 05 февраля 2010

В этом примере:

$(selector).fun1(val,{fun2(){ }}

Вторым параметром для функции один является функция обратного вызова . Это означает, что fun1 выполняет ТО fun2 выполняет.

В этом примере:

$(selecter).fun1().fun2().fun3()

Все функции запускаются как можно быстрее, если они имеют длительность, например, анимацию. В противном случае они выполняются в порядке fun1, fun2, fun3.

Так, с анимациями fun1, fun2 и fun3 будут 3 одновременными перекрывающимися анимациями, но с другими синхронными операциями они просто происходят по порядку.

0 голосов
/ 05 февраля 2010
  1. Использует функцию "обратного вызова". Вы передаете fun2 в качестве аргумента для fun1, затем fun1 вызывает fun2, когда он закончил.
  2. Это действительно умная функция jQuery, большинство методов jQuery возвращают исходный объект, к которому был вызван метод, поэтому вы можете вызвать другой метод для этого возвращаемого объекта. Последовательность совпадает с последовательностью, в которой она написана.
...