【问题标题】:jquery get array checkboxjquery获取数组复选框
【发布时间】:2010-01-21 00:11:33
【问题描述】:

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

$("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);
                        });
                    });

                });
            });

【问题讨论】:

    标签: jquery jquery-selectors checkbox


    【解决方案1】:
    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:#;&amp;,.+*~':"!^$[]()=&gt;|/的完整字符列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 2015-02-28
      相关资源
      最近更新 更多