有没有办法从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") };
});
答案 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") };
});