【发布时间】:2011-07-19 22:53:50
【问题描述】:
我正在使用 jQuery 的标准创作模式编写一个插件,使用方法来做不同的事情,我遇到了 .each() 的问题。
我从文档中了解到 $.each() 和 $(selector).each() 之间的区别,但我不知道如何解决我的问题...
在我的代码中,我有一个方法可以返回一个使用 $(selector).data() 存储的对象,我可以像这样运行 $.each() :
$.each($(selector).maps('getdetails'), function(key, value){/* stuff here */});
但是,在 jQuery 可链接性的范围内,这不是应该的,我无法理解如何做到这一点:
$(selector).maps('getdetails').each(function(key, value){/* stuff here */});
为了用户的可链接性和易用性,后者更可取。但是我总是收到以下错误:
TypeError: $(selector).maps("getdetails").each is not a function
这是变量对象中的相关方法:
getdetails: function(){
return $(this).data('maps').details;
},
(是的,在你说之前,我知道这是不正确的 JS,但正如我所说,它在我的代码中正确地包装在变量 {} 中。)
有谁知道我如何将这个对象操作成一个 jQuery 对象,后一个 .each() 函数将对其进行迭代?
【问题讨论】:
-
$(this).data('maps').details是一个数组吗? -
$(this).data('maps').details 是作为键 > 值对的对象的对象。在下面@zzzzBov 的回答之后,我现在让它返回 jQuery 对象类型,但请查看我的评论,因为我仍然没有得到想要的结果。
-
我认为你被
$.each困住了。一个 jQuery 实例对象只能包含一个值数组,但你拥有的是一组键值对。如果你想使用.each(),你需要一个jQuery实例对象,但是它不能保存键,只能保存值。 -
感谢您的建议。也许我需要重新审视我存储数据的方式;o)
-
好的,所以不是存储键 > 值对,每个值现在都是一个存储在数组中的对象,并且根据此处关于 $() 包装我的问题的建议,它可以按需要工作。再次向 Stack Overflow 致敬!!!
标签: jquery loops each typeerror