javascript – jQuery each() – 它是如何在内部工作的?

前端之家收集整理的这篇文章主要介绍了javascript – jQuery each() – 它是如何在内部工作的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在这方面咨询了jQuery的来源,但我必须承认这可能超出了我的理解 – 或者我正在寻找错误的地方.
https://github.com/jquery/jquery/blob/master/src/core.js

在第222行附近有一个看起来递归的函数,然后在第566行附近还有另一个在.extend()命名空间中声明的函数.

我只是好奇 – 这究竟是如何工作的?例如,当我打电话时:

$('.item').each(function(){
    // Do Something
});

如何循环遍历DOM元素数组,何时停止,它如何应用该函数?它不能做

$('.item').doThis()

因为doThis()可能不是该对象的成员.

请赐教:)谢谢.

最佳答案
不,它不是递归的. line 222上的函数是jQuery原型($.fn)上的函数,而它调用函数是jQuery.each – 一个在line 566中定义的静态属性.注意extend是如何工作的:如果没有给出要扩展的对象,它使用这个.它在代码的不同部分都应用于jQuery和jQuery.fn.

so how exactly does this work?

$obj.each(callback)调用$.fn.each方法,该方法在jQuery实例(DOM包装器)本身上应用$.each:line 223.

现在,在$.each中,有四种情况:有或没有提供的args数组,以及类似数组的结构或其他对象.您没有传递额外的args,并且jQuery实例具有length属性并且在数字索引中具有DOM元素,因此将执行line 596中的循环.所以你的电话相当于

for (var i=0,len=$obj.length; i

猜你在找的jQuery相关文章