2010-01-21 47 views
1

我在我的文档中有2个复选框数组。一个是engines[],另一个是searchId[]jquery get array复选框

$("input:checkbox[@name='searchId[]']:checked").each(function() i use this to capture all the values from the searchId[] checkboxes (only if checked). 
$("input:checkbox[@name='engines[]']:checked").each(function() same thing for engines 

问题是,它的选择器获取文档中所有选中的复选框,而不管它们的名称如何。我怎样才能让它只获得我想要的阵列?

为了更好地理解一些代码:

$("#startSearch").live("click", function(event){ 
        //event.preventDefault(); 
        $("input:checkbox[@name='searchId']:checked").each(function(){ 

         $.getJSON("startsearch.php",{searchId: $(this).val()},function(data){ 
          alert($(this).val()); 
          $('#status_' + $(this).val()).text(data.status); 
          $('#results_' + $(this).val()).text(data.results); 
          $('#date_' + $(this).val()).text(data.date); 
          $('#totalResults_' + $(this).val()).text(data.totalResults); 
         }); 
        }); 
       }); 

$("#submit").click(function(event){ 
        event.preventDefault(); 

        $("input[@name='engines[]']:checked").each(function(){ 

         $.getJSON("addsearch.php", { inputString: $('#inputString').val(),searchString: $('#searchString').val(), engine: $(this).val() }, function(data){ 
          //$('#searchTable tbody tr:first').empty(); 
          var row = '<tr><td><span id ="status_'+data.id+'">'+data.status+'</span></td>'+ 
           '<td>'+data.search+'</td>'+ 
           '<td>'+data.category+'</td>'+ 
           '<td>'+data.engine+'</td>'+ 
           '<td><span id = "results_"'+data.id+'">0</span></td>'+ 
           '<td><span id ="date_'+data.id+'">'+data.date+'</span></td>'+ 
           '<td><span id ="totalResults_'+data.id+'">0</span></td>'+ 
           '<td style="width: 96px;"><div class="actions"><ul>'+ 
           '<li><input class="radio" name="searchId[]" type="checkbox" value="'+data.id+'" /></li>'+ 
           '<li><a class="action1" href="#">1</a></li>'+ 
           '<li><a class="action4" href="#">4</a></li>'+ 
           '</ul></div></td>'; 
          $('#searchTable tbody').after(row); 
         }); 
        }); 

       }); 
      }); 

回答

5
  1. @attr选择上的jQuery 1.3完全删除,如果您使用的是jQuery的版本> 1.2,简单地从选择删除@迹象。
  2. []个字符需要双重转义。

    $("input:checkbox[name='searchId\\[\\]']:checked").each(function() { 
        //.. 
    }); 
    

docs

在jQuery的1.3 [@attr]除去的样式选择器(它们在jQuery的1.2以前建议使用)。只需从选择器中删除'@'符号,以便再次使用它们。

字符的完整列表need to be escaped#;&,.+*~':"!^$[]()=>|/