谁能解释一下这个 ajax .each 函数中的项目来自哪里
Can anyone explain where item comes from in this ajax .each function?
所以我使用 etsy API 和 JavaScript 调用此 ajax 代码
$.ajax({ url: etsyURL, dataType: 'jsonp', success: function(data) {
我猜这返回了一个对象数组?
并进入这个 .each 函数
if (data.ok) {
gallerySize=data.count;
$.each(data.results, function(i,item) { //assign array variables
shopName=item.Shop.shop_name;
我试图弄清楚的是每个函数到底在做什么 - 我不明白"item"对象来自哪里,并且正在尝试访问 .each 函数之外的信息
例如 - 就像现在一样 - shop_name只需要声明一次,那么每次在每个方法中都有这段代码是没有意义的。当然有一种方法可以访问 ajax 函数调用的任何对象数组?
我确定这是一件相当简单的事情 - 我只是不明白它设置的 .each 语句的方式以及它引用的项目来自哪里
在您的代码中,$.each()
遍历data.results
。
如果是数组,则i
是索引,item
是该索引处的值。
data.results = [
'foo', // i = 0, item = 'foo'
'bar', // i = 1, item = 'bar'
'baz' // i = 2, item = 'baz'
]
如果它是一个对象,则i
是键,item
是该键下的值。
data.results = {
'thefoo' : 'fooness', // i = 'thefoo', item = 'fooness'
'thebar' : 'barness', // i = 'thebar', item = 'barness'
'thebaz' : 'bazness' // i = 'thebaz', item = 'bazness'
}
让我们来看看jQuery的代码:
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}
return object;
},
请参阅for ( name in object ) {
和for ( ; i < length; ) {
?
这就是你论点的循环。
(非常聪明,jQuery,从未见过有人使用这样的for
)
现在,看到callback.apply( object[ name ], args )
了吗?
那是你的i
和item
.
相关文章:
- 在哪里可以找到'项目'在plothover函数中
- 从Document调用onchange函数.已准备好从更新中预先选择的项目
- 将项目放在动画和 inserbefore 函数混乱之后
- 为什么像angular这样的项目有自己版本的通用函数
- 第一个jquery项目-在函数中使用处理程序来模块化它们
- javascript函数没有'不能在MVC项目下工作
- 在FB.api函数中创建一个数据项目
- 在AngularJS中切换编辑状态并更改项目'单击另一个函数
- 使用 setTimeout() 函数从本地存储中删除项目
- Angular 1.3 中是否有更好的模式,可以在每次修改 ng-repeat 中的项目时调用函数
- 如何将一个函数用于多个项目 JEditable/JQuery
- 函数范围规则(Google Apps 脚本项目)
- 在项目中构建 js 函数
- 在 jQuery on 函数中同时对多个项目运行时保持一致的值
- 如何传递函数来比较项目
- 在我的 javascript 项目中获取不正确的值时,将函数作为事件处理程序的回调传递
- 谁能解释一下这个 ajax .each 函数中的项目来自哪里
- 编写一个函数,将数组中的每个项目加倍
- 调用所有数组元素的函数,而不将项目作为参数传递
- 具有项目特定函数的循环的 Django 模板的最佳实践