jQuery选择属性到数组中

Dav*_*eng 37 jquery

获得此阵列最优雅的方法是什么

[10, 20, 30, 40, 50]
Run Code Online (Sandbox Code Playgroud)

在此列表之外

<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>
Run Code Online (Sandbox Code Playgroud)

使用jQuery.

sam*_*one 62

****编辑****

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

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

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

史诗般的更快

在此输入图像描述


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

并使用jquery的map函数...

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

而且它们都同样快...... http://jsperf.com/testing-stuff 在此输入图像描述

  • +1,低级代码更快!优雅是有代价的. (3认同)

nat*_*lds 29

我认为地图工作得很好..只是不在链中.

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

  • @samccone有趣的是,"没有库"是特别要求"使用jquery"解决方案的问题的首选. (6认同)

Joh*_*een 8

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

  • +1比我慢39秒.:) (2认同)

Nic*_*roi 5

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

_($('ul li').toArray()).map(function(e) { return e.value })
Run Code Online (Sandbox Code Playgroud)

虽然我们在这里,为什么不为CoffeeScript转储Javascript:

_($('ul li').toArray()).map (e) -> e.value
Run Code Online (Sandbox Code Playgroud)

;-)