如果您有一个复选框,我想确定最有效的方法(使用jquery或dom)来获取一组复选框的值。
当输入复选框是表单的一部分时,这应该是通用的。但是,这个x浏览器是否安全,如何更有效地执行此操作,以及如果复选框不是表单的一部分该怎么办?
function (domCheckboxElm) {
var result = $.map($(domCheckboxElm.form.elements[domCheckboxElm.name]).filter(":checked"), function(e) {
return $(e).val();
});
return result;
}
修改
作为旁注,这里的表现非常重要。具有少量输入元素的表单和具有数千个表单的表单需要此算法。我的许多用户拥有极其旧的计算机('02,'04,'05)。
答案 0 :(得分:1)
首先: Select values of checkbox group with jQuery
性能真的不应该是一个问题,除非你有一千个复选框一次通过。最好的办法是将复选框封装在div或其他父DOM对象中,然后可以在jQuery中使用它来约束其DOM搜索:
HTML
<div id="checkboxDiv">
<input type="checkbox" name="sample" value="isAPerson" />
<input type="checkbox" name="sample" value="isADog" />
<input type="checkbox" name="sample" value="isACat" />
</div>
的jQuery
var checkBoxArray=[];
$("#checkboxDiv input:checkbox").each(function(){
checkBoxArray.push([$(this).attr("value"),$(this).attr("checked")]);
});
这是一个实际的例子(假设你已经包含了jQuery):
<script type="text/javascript">
$("#checkboxDiv input:checkbox").click(function(){
var checkBoxArray=[];
$("#checkboxDiv input:checkbox").each(function(){
checkBoxArray.push([$(this).attr("value"),$(this).attr("checked")]);
});
$("#disp").empty().append(function(){
var outputStr="";
for (a in checkBoxArray){
outputStr+=checkBoxArray[a][0]+": "+checkBoxArray[a][1]+"<br/>";
}
return outputStr;
});
});
</script>
然后,身体:
<div id="checkboxDiv">
<input type="checkbox" name="sample" value="isAPerson" />
<input type="checkbox" name="sample" value="isADog" />
<input type="checkbox" name="sample" value="isACat" />
</div>
<div id="disp"></div>
答案 1 :(得分:0)
我认为,如果元素不是表单的一部分,那么我必须使用的解决方案是我在通用"input:checkbox[name=" + elm.attr("name") + "]"
上回退的建议。