使用jQuery返回匹配元素的属性数组

8
在jQuery中,选择元素作为数组很容易。 $("a"); // 返回一个锚点元素数组
但是能否将匹配元素的属性作为数组进行选择呢?
目前我需要做的是...

links = [ ];

$("a").each(function() {

href = $(this).attr("href");
links.push(href); 

});

有没有更好的方法来填充变量links,使其包含所有匹配锚点的href?

2个回答

19
使用$.map,如下所示:
var links = $('a').map(function() { return this.href }).get()

2
+1 - 你需要在末尾加上 .get(),但这是正确的方法。 - Nick Craver
谢谢,我只是快速地做了 [0] 并且假设它是一个数组,但实际上它是一个由 jQuery 构造的类似数组的对象。 - meder omuraliev
1
这个库的目的似乎是为了掩盖程序员进行这些花式操作,但这种写法有点啰嗦。为什么不直接返回一个数组:var links = $('a').attr('href'); 这样不是更简洁易读吗?(考虑这是我对jQuery下一版的建议...) - Cameron Stillion
“data”属性怎么样? - Hugo-dev

5
var links = $("a").map(function(){return $(this).attr("href")}).get();

这种方法非常适用于自定义定义的“data”属性,例如“data-id”,“data-name”等。 - iiminov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接