迭代JavaScript中的所有复选框

时间:2014-03-26 06:25:02

标签: javascript jquery html checkbox

尝试迭代所有复选框并检查是否已选中时,我遇到了一些困难。这是代码:

content = "<table class=\"filter-table\">";
content += "<tr><td><input class=\"pssLabel\" type=\"checkbox\" onclick=\"toggleOverlayer('pssLabel')\">Show Label</td></tr>" + 
            "<tr><td><div id=\"pss\"></div></td></tr>";
content += "<tr><td colspan=\"2\" style=\"padding:5px;font-size:15px;color:black;\">Development Type</td></tr>";
content += "<tr><td><input value='Commercial and Residential' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()' >Commercial and Residential</td><td><input value='Commercial' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()' >Commercial</td></tr>";
content += "<tr><td><input value='Heavy Vehicle Park' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Heavy Vehicle Park</td><td><input value='Hospital' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Hospital</td></tr>";
content += "<tr><td><input value='Hotel' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Hotel</td><td><input value='Industrial' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Industrial</td></tr>";
content += "<tr><td><input value='Industrial-White' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Industrial-White</td><td><input value='Office' class=\"pssCheckBox\"  type=\"checkbox\" onclick='queryPSS()'>Office</td></tr>";

以下是我迭代所有复选框并执行检查的方法:

function queryPSS() {
var type_filter = new Array();

//Iterate thru all checkbox
$(":checkbox").each(function(index, element) {
    if($(this).is(':checked'))       
    {
        type_filter.push($(this).val());            
    }
});

}

但是,有没有办法让我跳过第一个复选框(无论是否检查)并检查其他复选框并存储到数组中。

提前致谢。

5 个答案:

答案 0 :(得分:2)

只需添加一个简单的if条件,如

if (index !== 0) 

完整代码:

$("input:checkbox").each(function(index, element) {
    if (index !== 0) { //skip first checkbox
       if($(this).is(':checked')) {
        type_filter.push($(this).val());            
       }
     }
});

答案 1 :(得分:1)

由于您已将pssLabel类分配给第一个输入,因此可以跳过该类的复选框:

$(":checkbox").each(function(index, element) {
    if($(this).hasClass('pssLabel')) return;

    if($(this).is(':checked'))       
    {
        type_filter.push($(this).val());            
    }
});

答案 2 :(得分:0)

您可以使用:gt(0)

$(":checkbox:gt(0)").each(function(index, element) {

---> https://api.jquery.com/gt-selector/

答案 3 :(得分:0)

您只能定位类pssCheckBox的复选框,因为第一个没有。

function queryPSS() {
    var type_filter = $("input.pssCheckBox:checked").map(function (index, element) {
        return this.value;
    }).get();

}

另请查看使用.map()

答案 4 :(得分:-1)

是的,使用 .map() 就像楼上

var type_filter = $("input[name='instanceCheck']:checkbox:checked").map(function(index, element) {
        return this.value;
}).get();

这个回调是同步函数,每个回调都是异步函数