我意識到,給出以下: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')創建的對象。從對象文字創建的對象通常被稱爲對象。然而,因爲函數和數組也是對象,所以我們說「普通對象」強調它不是其中之一,而是一個簡單的對象。 (函數,數組,宿主對象等都是具有附加特殊功能的對象,普通對象是唯一不*有特殊行爲的對象。) –