为什么代码不进入每个块?

时间:2015-06-05 12:38:44

标签: javascript jquery

我需要选中所有选中的复选框,然后获取id属性的值。

我正在做以下方式:

 $("input:checkbox[class=selectioncheckbox]").each(function() {
        console.log("Inside each block");
        if($(this).is(":checked")) {
             console.log("Inside if block");
             pnames[c] = $(this).attr('id');  
             console.log(pnames[c] + " " + c);
             c++;
        } 
   });

但是有一个问题。代码永远不会进入each块。这可能是什么原因?

编辑: 以下是添加类selectioncheckbox的复选框的代码:

$('#teamcheckbox_a').change(function() {
                           if($(this).is(':checked')) {
                               $('#teamcheckbox_b').prop('checked',false);
                                $('#playerselect').empty();
                                team_a = $('#teamnames_a option:selected').text(); 
                                $.ajax( {
                                    url : 'http://localhost:8081/Football/GetPlayerNames',
                                    data : {
                                       teamname : $('#teamnames_a option:selected').text() 
                                    },
                                    dataType : 'json',
                                    type : 'GET'
                                })
                                .done(function(message) {
                                      $('#playerselect').html("<label>Select Players</label>");
                                      $.each(message,function(index,row) {
                                          $('#playerselect').append(
                                                         "<tr>" + 
                                                         "<td class='text-center'>" + row.jnumber +  "</td>" + 
                                                         "<td>" + row.name + "</td>" +  
                                                         "<td class='text-center'>" + row.position + "</td>" +
                                                         "<td> <input type='checkbox' class='selectioncheckbox form-control input-lg' id='" + row.jnumber + ":" + row.name + "' /> </td>" +
                                                         "</tr>");
                                      });
                                       $('.selectioncheckbox').change(function() {
                                              if($(this).is(':checked')) {
                                                  count++;
                                              } else {
                                                  count--;
                                              }
                                              $('#pcount').html("Count : " + count);
                                      });
                                })
                                .fail(function(message) {
                                      console.log(message);
                                })
                           }
                       });

                       $('#teamcheckbox_b').change(function() {
                         if($(this).is(':checked') ) {
                                $('#teamcheckbox_a').prop('checked',false);
                                $('#playerselect').empty();
                                team_a = $('#teamnames_b option:selected').text(); 
                                $.ajax( {
                                    url : 'http://localhost:8081/Football/GetPlayerNames',
                                    data : {
                                       teamname : $('#teamnames_b option:selected').text() 
                                    },
                                    dataType : 'json',
                                    type : 'GET'
                                })
                                .done(function(message) {
                                      $('#playerselect').html("<label>Select Players</label>");
                                      $.each(message,function(index,row) {
                                          $('#playerselect').append(
                                                         "<tr>" + 
                                                         "<td class='text-center'>" + row.jnumber +  "</td>" + 
                                                         "<td>" + row.name + "</td>" +  
                                                         "<td class='text-center'>" + row.position + "</td>" +
                                                         "<td> <input type='checkbox' class='selectioncheckbox form-control input-lg' id='" + row.jnumber + ":" + row.name + "' /> </td>" +
                                                         "</tr>");
                                      });
                                       $('.selectioncheckbox').change(function() {
                                              if($(this).is(':checked')) {
                                                  count++;
                                              } else {
                                                  count--;
                                              }
                                              $('#pcount').html("Count : " + count);
                                      });
                                })
                                .fail(function(message) {
                                      console.log(message);
                                })
                         }
                       });

3 个答案:

答案 0 :(得分:5)

根本没有调用代码,或者$("input:checkbox[class=selectioncheckbox]")的长度为0(这很可能是因为在将元素添加到DOM之前运行代码,在哪种情况下,您可以使用就绪处理程序解决它。)

答案 1 :(得分:1)

用作选择器:$(".selectioncheckbox:checked")因为我认为selectioncheckbox仅适用于复选框,无需在每个循环内检查已检查状态。

你的问题是没有元素匹配,因为如果在同一元素上设置了多个类,则使用属性选择器[class=selectioncheckbox],这不匹配。

答案 2 :(得分:1)

脚本在添加到DOM的元素之前调用。因此脚本无法识别类名,长度将为0.在ready处理程序中调用脚本,如下所示。

$(document).ready(function(){
     var c= 0;
     var pnames = [];
     $("input:checkbox[class=selectioncheckbox]").each(function() {
            console.log("Inside each block");
            if($(this).is(":checked")) {
                 console.log("Inside if block");
                 pnames[c] = $(this).attr('id');  
                 console.log(pnames[c] + " " + c);
                 c++;
            } 
      });
});
相关问题