2011-09-02 70 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/)文档中提到。) –