我意识到,给出以下:k的JQuery不一致?
foo = {a:'aa', b:'bb'}
$.each(foo, function(k,v) { ...
$(foo).each(function(k,v) { ...
的值,v是在两种情况下不同。难道我是奇怪的还是jquery不一致?
编辑
如果你来这里要说明一下。每个$和$(FOO)。每个之间的区别,我要澄清的是,我知道两者之间的区别。
我意识到,给出以下:k的JQuery不一致?
foo = {a:'aa', b:'bb'}
$.each(foo, function(k,v) { ...
$(foo).each(function(k,v) { ...
的值,v是在两种情况下不同。难道我是奇怪的还是jquery不一致?
编辑
如果你来这里要说明一下。每个$和$(FOO)。每个之间的区别,我要澄清的是,我知道两者之间的区别。
根据jQuery()
文档的"Working with plain objects"
部分,有许多选项,但使用.each()
进行枚举不是其中之一。
正与普通对象
目前,支撑在包裹在jQuery的普通的JavaScript对象的唯一操作是:
.data()
,.prop()
,.bind()
,.unbind()
,.trigger()
和.triggerHandler()
。在普通对象上使用.data()
(或任何需要.data()
的方法)将在对象上产生一个名为jQuery{randomNumber}
(例如jQuery123456789)的新属性。
您应该使用通用的$.each()
枚举器。
是的我认为假设每个函数都可以应用两种方式是一个很大的错误 – disappearedng
@disappearedng:直到你问,我不知道你可以传递一个对象作为第一个参数。国际海事组织,jQuery的功能是太过于负担不同的行为。 – 2012-01-23 00:47:51
foo alone是一个对象字面值,$(foo)是一个jQuery对象。
它是因为你用第二种方法“选择”对象(即DOM东西),而不是迭代对象。
@disappearedng - 我检测到一些讽刺吗? –
在你的第一个例子你迭代这相当于一个对象:
$.each(foo, function(key, value) {...
和你的第二个例子,你迭代选择DOM节点,这相当于
$(foo).each(function(index, element) {...
我希望清理东西
'$(foo).each(...'在foo是一个普通对象时不起作用,它不会迭代它的属性......当你需要迭代属性对象,我推荐'Objec t.keys(foo).forEach(...'。 –
简单对象是什么意思?我将foo视为字典/散列表/散列 – disappearedng
普通对象是从对象文字(如上例中的'foo')创建的对象。从对象文字创建的对象通常被称为对象。然而,因为函数和数组也是对象,所以我们说“普通对象”强调它不是其中之一,而是一个简单的对象。 (函数,数组,宿主对象等都是具有附加特殊功能的对象,普通对象是唯一不*有特殊行为的对象。) –