首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery.each()未定义的问题

jQuery.each()未定义的问题
EN

Stack Overflow用户
提问于 2010-07-26 01:38:13
回答 3查看 23.1K关注 0票数 5

我有以下代码

代码语言:javascript
复制
function myFunction(items) {
   // this prints out 11
   alert(items.length);

   $(items).each(function(i, item) {
       // item is undefined for some reason
   }
}

如果我提醒项目的长度,它就会有元素(准确地说是11个)。那么,为什么有11个项目存在,但jQuery仍然传递未定义?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-26 01:58:07

对此的唯一解释是,项目数组包含未定义的值,即:

代码语言:javascript
复制
items = [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined];

其他两个答案都是完全不正确的。each的第一个参数是索引,而不是值,jQuery.fn.each调用jQuery.each。它们之间没有消除歧义。

票数 8
EN

Stack Overflow用户

发布于 2010-07-26 01:41:07

听起来你是在,而不是,正在给你的函数传递一个jQuery wrappet set。如果传递arrayobject,则需要使用jQuery helper function $.each(),如下所示

代码语言:javascript
复制
$.each(items, function(index, element){
});

正如我在其他答案中多次提到的那样,使用.each()或javascripts原生for..in遍历数组是不好的做法。

如果要传递arrays,请使用标准for loop

编辑

事实证明,您实际上可以使用标准数组调用jQuery constructor。但这样做似乎是可怕的因果报应,你不能调用所有那些jQuery方法中的95%,除非你想崩溃/破坏你的代码。

票数 5
EN

Stack Overflow用户

发布于 2010-07-27 03:35:43

由于注释不允许使用漂亮的代码清单...(是吗?):

动画将对任何对象起作用。它被记录为只对CSS属性起作用,但只是为了证明一点:

代码语言:javascript
复制
var foo = { x: 10, y: 12 }; 

$(foo).animate({ x: "+=20", y: "20" }, 1000, 
      function () { alert(foo.x + ":" + foo.y); }); 

会吐出"30:20“。这有用吗?也许不是在日常工作中。:)

数组的诀窍在于,您将在每个条目上设置相同的属性。示例:

代码语言:javascript
复制
var foo = [{ x: 10 }, { x: 20 }]; 

$(foo).animate({ x: "+=30" }, 1000, 
      function () { alert(this.x); }); 

吐出"40“和"50”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3330264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档