2011-09-02 66 views
0

有沒有辦法從jQuery選擇項目對象?作爲一個簡單的例子,假設我想要一個對象數組,它對應於我的頁面的錨;在每個對象中,txt表示錨點的文本,val表示其中的數據id attr。從jQuery選擇器項目新對象

var result = []; 
$("a").each(function(i, o) {  
    result.push({ txt: $(o).text(), val: $(o).data("id") }); 
}); 
doSomething(result); 

是否有可能像做一個C#選擇:

doSomething($("a").select(
    function(i, o) { return { txt: $(o).text(), val: $(o).data("id") }; 
}); 

回答

2

你可以使用.map()方法投射一組:

doSomething($("a").map(function(o, i) { 
    return { txt: $(o).text(), val: $(o).data("id") }; 
}); 

備註:注意到index和與.each方法相比,element參數在匿名回調中反轉。不要問爲什麼:-)如果你不關心索引,你可以簡單地忽略它們,並做到這一點:

doSomething($("a").map(function() { 
    return { txt: $(this).text(), val: $(this).data("id") }; 
}); 
+0

**這是**我正試圖記住。謝謝! –

+0

因爲'map'(莫名其妙地)在數組周圍返回一個'jQuery'包裝而不是真正的數組,所以你可能會想在'get'結尾。 (這在['map'](http://api.jquery.com/map/)文檔中提到。) –