jQuery选择属性到数组中

时间:2011-08-14 04:44:05

标签: jquery

获得此数组最优雅的方法是什么

[10, 20, 30, 40, 50]

在此列表中

<ul>  
    <li value="10">Item One</li>
    <li value="20">Item Two</li>
    <li value="30">Item three</li>
    <li value="40">Item Four</li>
    <li value="50">Item Five</li>
</ul>

使用jQuery。

4 个答案:

答案 0 :(得分:60)

****编辑****

好的,手套已被抛下......

var elements = (document.getElementsByTagName('li'));
var vals = [];
for(var i=0;typeof(elements[i])!='undefined';vals.push(elements[i++].getAttribute('value')));

没有库3行代码......

更快

enter image description here


var myVals = [];
$('li','ul').each(function(){
  myVals.push($(this).attr('value'));
});

并使用jquery的地图功能...

var myVals = [];
$('li','ul').map(function(){
  myVals.push($(this).attr('value'));
});

他们都同样快...... http://jsperf.com/testing-stuff enter image description here

答案 1 :(得分:27)

我认为地图的效果很好..只是不在链中。

var vals = $.map($("li[value]"), function(li) {
    return $(li).attr("value");
});

答案 2 :(得分:8)

var outVal = [];
$('ul li').each(function(idx, el){
    outVal.push($(this).attr('value'));
});

答案 3 :(得分:5)

说到优雅的代码,我们可以使用Underscore结合jQuery获得更好的解决方案:

_($('ul li').toArray()).map(function(e) { return e.value })

虽然我们正在努力,但为什么不为CoffeeScript转储Javascript:

_($('ul li').toArray()).map (e) -> e.value

- )