5

所以有点假设性的问题(不要犹豫,让我知道是否有另一个帖子有同样的问题 - 虽然我没有找到)

因此,.val() 方法返回选择器匹配的第一个元素的当前值。是否有另一种“速记”jquery 方法可以获取所有匹配元素的值并返回一个数组?

还是我这样做是最安全的:

var myResult = [];
$(".myClass").each(function(){
    myResult.push($(this).val());
});

正如我上面所说,我寻找了一些东西,但可能只是我必须使用 .each()

4

1 回答 1

9

不,没有速记。但是,有一个比你的方法更短的方法:

var myResult = $(".myClass").map(function(){
    return this.value;
}).get();

如果你真的想,你可以创建自己的速记:

$.fn.getValAsArray = function(){
    return this.map(function(){ return this.value; }).get();
};

var myResult = $(".myClass").getValAsArray();

还有一些选择:

$.map

var myResult = $.map($.makeArray($(".myClass")),function(input){
    return input.value;
});
// or
var myResult = $.map($(".myClass").get(),function(input){
    return input.value;
});

[].map

var myResult = $.makeArray($(".myClass")).map(function(input){
    return input.value;
});
// or
var myResult = $(".myClass").get().map(function(input){
    return input.value;
});
于 2013-07-18T21:29:12.040 回答