jQuery - 获取任何一组复选框的选中值

时间:2010-08-24 16:10:31

标签: javascript jquery dom

如果您有一个复选框,我想确定最有效的方法(使用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)。

2 个答案:

答案 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") + "]"上回退的建议。