我在这方面咨询了jQuery的来源,但我必须承认这可能超出了我的理解 - 或者我正在寻找错误的地方. https://github.com/jquery/jquery/blob/master/src/core.js
在第222行附近有一个看起来递归的函数,然后在第566行附近还有另一个在.extend()命名空间中声明的函数.
我只是好奇 - 这究竟是如何工作的?例如,当我打电话时:
$('.item').each(function(){
// Do Something
});
Run Code Online (Sandbox Code Playgroud)
如何循环遍历DOM元素数组,何时停止,它如何应用该函数?它不能做
$('.item').doThis()
Run Code Online (Sandbox Code Playgroud)
因为doThis()可能不是该对象的成员.
请赐教:)谢谢.
不,它不是递归的。第 222 行的函数是 jQuery 原型 ( $.fn) 上的函数,而它调用的函数是- 一个在第 566 行jQuery.each定义的静态属性。注意如何工作:如果没有给出要扩展的对象,它将使用. 它既应用于代码的不同部分,也应用于代码的不同部分。extendthisjQueryjQuery.fn
那么这到底是如何工作的呢?
$obj.each(callback)正在调用该$.fn.each方法,该方法适用$.each于 jQuery 实例(DOM 包装器)本身:第 223 行。
现在,在 中$.each,有四种情况:有或没有提供的args数组,以及在类似数组的结构或其他对象上。您没有传递额外的参数,并且 jQuery 实例有一个length属性并且在数字索引中具有 DOM 元素,因此将执行第 596 行中的循环。所以你的电话相当于
for (var i=0, len=$obj.length; i<len; i++)
if ( callback.call($obj[i], i, $obj[i]) === false ) break;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3713 次 |
| 最近记录: |