对jQuery $.each函数感到困惑
Confused about the jQuery $.each function
假设我有
$.each(data,function(i,item){
...
});
我知道 $.each 将迭代对象(或数组)数据,但我对函数感到困惑。为什么"i"在循环中递增1("i"++),什么将"item"定义为数据[i]?这是否只是应用于对象或数组中每个项目的内置函数机制?
谢谢
jQuery的.each()函数调用你的回调函数,元素的索引作为第一个参数,元素的值作为第二个参数。您可以在此处找到相关文档:http://devdocs.io/jquery/jquery.each
下面是一个"假设实现",展示了如何实现这一点:
var myEachFunction = function (array, callback) {
var i, len;
for (i = 0, len = array.length; i < len; ++i) {
callback(i, array[i]);
}
};
// Usage: myEachFunction([5, 6, 7], function (i, item) {
// doSomething();
// });
在此实现中,我按该顺序调用提供的带有循环索引和项值的回调函数。
jQuery的实现类似,但要复杂得多。除了错误/参数检查等功能外,它还支持迭代对象,而不仅仅是数组。jQuery 文档提供了有关以什么顺序传递哪些参数的更多信息。
它
完全是一个内置的jquery函数,对于每个项目(循环使用a for it应用你提供的函数,传递给函数索引和element[index])。此外,它比它检测 $.each 中的第一个参数是 json 还是数组更聪明 - 对于数组 - 索引被传递给 json 键与值一起传递)。
类似的实现如下所示:
function each(x, fn) {
if(x.constructor == Array) {
for(var i = 0; i < x.length; i++) {
fn(i, x[i]);
}
} else if (x.constructor == Object) {
for(var key in x) {
fn(key, x[key]);
}
} else {
throw Exception('Non array or object passed');
}
}
each([1,2,3], function(ind, el) {console.log(ind, el)});
each({x:1, y:2}, function (key, el) { console.log(key, el) });
相关文章:
- 执行ajax成功函数-jQUERY
- 函数jquery.html()不提供数据属性集值
- 将变量放入ajax函数JQuery
- 函数jquery的未定义返回
- 如何在嵌套函数jquery上保持变量的值不变
- 用我的函数jquery给出数据/参数
- Firefox在调用函数(jquery)时冻结
- 在传递节时触发一个函数 - jquery
- 循环执行数组函数jQuery
- 在函数中调用另一个函数JQuery
- 对象不是函数-Jquery/JavaScript
- TypeError:对象不是函数-jquery
- 获取函数jQuery设置的属性
- 从函数jquery获取更新的变量值
- 切换而不是悬停函数jQuery
- 函数jQuery.animation()运行了两次行,但不起作用
- 使用函数 jQuery 获取变量
- 自执行函数 jquery 与 JavaScript 的区别
- 从回调函数 -JQuery 获取返回值
- 一个接一个地执行函数 JQUERY