2012-02-18 46 views
-1
var $inventory=$('#inventory tbody'); 
var quantities=$inventory.find('td:nth-child(2)') // suppose it contains values of 2,3,4 inside td tags 
        .map(function(index,qty){ 
         return$(qty).text(); 
    }).get(); 

現在,我沒有得到map在這裏。 IT'IS作爲map(function(**index,qty**)但根據link無法理解MAPmethod的行爲?

這應該是像

jQuery.map(arrayOrObject, callback**(value, indexOrKey**)) 

但在我的代碼中提到的地圖仍然是偉大的工作,但在索引和值一個相反的方向。 和var quantities輸出
["2", "3", "4"] 所以,我很困惑?看起來像文檔錯誤!

[編輯:] 以上的get()用於在結束,但即使我不使用它,輸出仍然是相同的,即[「2」,「3」,「4」]那麼,爲什麼使用它? 說我修改後的代碼是現在
// .....same above code
return$(qty).text(); });

+0

爲什麼減1?這是荒謬和濫用priveleges :( – kushalvm 2012-02-18 08:11:43

回答

0

有兩種「地圖」的方法:one在屬於選擇(jQuery.fn.map)的結果的全局對象(jQuery.map)和one。第一個旨在用於常規JavaScript數組或對象。您正在使用第二個,它適用於所選元素的列表(因此,不需要第一個參數)。

+0

上面得到()是在最後使用,但即使我不使用它,輸出仍然是相同的,即[[2],「3」,「4」] 那麼爲什麼使用它? – kushalvm 2012-02-18 06:39:00

+0

不帶參數調用[get](http://api.jquery.com/get/)只需製作元素集的副本。如果你想要一個特定的(例如第三個),你可以使用'$ inventory.get(2)'。在這種情況下,它沒有什麼區別,但是如果你打算破壞性地修改這個集合,那麼複製它可能是有用的。 – mgibsonbr 2012-02-18 06:43:53

+0

你不明白。你說,我明白但是我說,爲什麼當我的變量數量仍然會有相同的輸出時,即使我不使用get()以上,爲什麼要在第一個地方使用get()! – kushalvm 2012-02-18 06:47:02

1

.map()

這是您正在使用.map返回jQuery對象和回調內部this是指當前DOM ELEM

docs .map(callback(index,domElement))

callback(index,domElement)函數obje ct將調用 當前集合中的每個元素。


其中作爲鏈接你提到

$.map返回陣列

jQuery.map()

jQuery.map(數組,回調(elementOfArray,indexInArray))

arrayThe要翻譯的數組。

callback(elementOfArray,indexInArray)針對每個 項目處理的函數。函數的第一個參數是數組項, 第二個參數是數組中的索引該函數可以返回任何 值。在函數內,這指的是全局(窗口)對象。