从jQuery选择器中投射新对象

时间:2011-09-02 15:12:48

标签: jquery jquery-selectors

有没有办法从jQuery选择中投射对象?作为一个简化的例子,假设我想要一个对象数组,对应于我的页面的锚点;在每个对象中,txt指的是锚的文本,val指的是其中的data-id attr。

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

是否可以像C#Select那样做:

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

1 个答案:

答案 0 :(得分:2)

您可以使用.map()方法投影集合:

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

备注:请注意,与index方法相比,匿名回调中的element.each参数被反转。不要问为什么:-)如果你不关心索引,你可以简单地省略它们并执行此操作:

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