【问题标题】:How do chained functions get executed in JQuery?链接函数如何在 JQuery 中执行?
【发布时间】:2010-02-05 12:51:43
【问题描述】:

当一个函数在JQuery中被链接时,操作的顺序是什么?

示例 1

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

示例 2

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

【问题讨论】:

    标签: jquery method-chaining


    【解决方案1】:

    从左到右。 fun3()fun2() 的结果(=返回值)上运行,fun2()fun1() 的结果上运行。

    这种链接可以在 JQuery 中完成,因为每个可链接的函数都返回调用它的对象/元素。

    所以$(selector).fun1() 在执行后返回$(selector) 元素。从返回的元素调用fun2(),依此类推。

    【讨论】:

    • 谢谢朋友!我以前很困惑,但现在我的困惑被清除了。再次感谢!
    【解决方案2】:

    在这个例子中:

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

    函数一的第二个参数是callback function。这意味着 fun1 执行 THEN fun2 执行。

    在这个例子中:

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

    如果所有函数都有持续时间(比如动画),它们会尽快启动。否则,它们按fun1fun2fun3 的顺序执行。

    因此,对于动画,fun1fun2fun3 将是 3 个同时重叠的动画,但对于其他同步操作,它们只是按顺序发生。

    【讨论】:

    • So with animations, fun1, fun2 and fun3 would be 3 simultaenous overlapping animations - 我认为你把这部分复杂化了一点。对于动画,实际函数仍然按顺序触发,但它们本身会使用回调函数创建间隔。由于 JS 是单线程的,所以函数不能异步运行。定时器与主线程分开计时,但是当主线程空闲时,它们的回调函数在主线程上运行。
    • @Andy - 没错,我的意思是 效果 是同时和重叠的 :)
    【解决方案3】:
    1. 使用“回调”函数。您将 fun2 作为参数传递给 fun1,然后 fun1 在完成后调用 fun2。
    2. 这是 jQuery 的一个非常聪明的特性,jQuery 的大多数方法都返回调用该方法的原始对象,因此您可以在该返回的对象上调用另一个方法。顺序与写入的顺序相同。

    【讨论】:

    • 谢谢朋友!你的回复对我很有用。
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多