我有几个复选框和一个假提交按钮来发出AJAX请求:
<form>
<input type="checkbox" value="1"/>
<input type="checkbox" value="2" checked="checked"/>
<input type="checkbox" value="3"/>
<input type="checkbox" value="4" checked="checked"/>
<input type="button" onclick="return mmSubmit();"/>
</form>
在mmSubmit()方法中,我想检索已选择的值数组。这是我目前正在做的事情。
mmSubmit = function() {
var ids = [];
$('input[type=checkbox]:checked');.each(function(index) {
ids.push($(this).attr('value'));
});
// ids now equals [ 2 , 4 ] based upon the checkbox values in the HTML above
return false;
};
我想知道jQuery中是否存在用于将值检索到数组中的简写方法,或者我的内容是否已经是最优的。
答案 0 :(得分:2)
我认为这可以通过地图完成。请尝试以下方法..
mmSubmit = function() {
var ids = $('input[type=checkbox]:checked').map(function(){
return $(this).val();
}).get();
// ids now equals [ 2 , 4 ] based upon the checkbox values in the HTML above
return false;
};
答案 1 :(得分:0)
您可以使用.val()代替.attr('value')。
$。serializeArray()也可以做你想做的事情(http://docs.jquery.com/Ajax/serializeArray)。
答案 2 :(得分:0)
这需要一些优化,但通常是正确的方式。我的变种:
mmSubmit = function () {
var ids = [];
$('input[type=checkbox]').each(function () {
if (this.checked) {
ids[ids.length] = this.value;
}
});
return ids;
};
它快一点。