Javascript 通过jQuery检索选中输入框值的更好方法?
我有几个复选框和一个假提交按钮来发出AJAX请求:Javascript 通过jQuery检索选中输入框值的更好方法?,javascript,jquery,Javascript,Jquery,我有几个复选框和一个假提交按钮来发出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"/
<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>
我想知道jQuery中是否有一个速记方法用于将值检索到数组中,或者我的方法是否已经是最佳的。那么您可以使用.val()而不是.attr('value')
$.serializeArray()也可以做您想做的事()。我认为这可以通过map实现。试试下面的方法
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;
};
看看:它需要一些优化,但一般来说这是正确的方法。我的变体:
mmSubmit = function () {
var ids = [];
$('input[type=checkbox]').each(function () {
if (this.checked) {
ids[ids.length] = this.value;
}
});
return ids;
};
速度快了一点。我不知道您的实际代码中是否有这样的代码,但以防您输入错误:选中后不需要分号'。每个(抱歉,它不在我的实际代码中,这只是将我的代码复制到问题中的一个错误。不过感谢您指出这一点!根据Quintin Robinson的回答,我认为map()函数就是我要寻找的,但是val()和serializeArray()方法肯定很值得了解,谢谢!)
mmSubmit = function () {
var ids = [];
$('input[type=checkbox]').each(function () {
if (this.checked) {
ids[ids.length] = this.value;
}
});
return ids;
};