代码之家  ›  专栏  ›  技术社区  ›  Murphy1976

jQuery复选框填充多维数组

  •  0
  • Murphy1976  · 技术社区  · 10 年前

    我有一个复选框列表:

    <input type="checkbox" name="a" value="cb1" value2="value01" class="sort" />
    <input type="checkbox" name="a" value="cb2" value2="value02" class="sort" />
    <input type="checkbox" name="a" value="cb3" value2="value03" class="sort" />
    <input type="checkbox" name="a" value="cb4" value2="value04" class="sort" />
    

    我想做的是,当我打开或关闭这些时,它们将填充一个多维数组(Arr_Sort[0][1]),仅两个级别。

    这是我的脚本代码,可以很好地填充一维数组,我只是不知道如何修改它来填充多维数组。

    $(document).ready(function(){
    
        $(".sort").change(function()
        {
            var arr_sort = new Array();
    
            $(".sort").each(function()
            {
                if( $(this).is(':checked') )
                {
                    arr_sort.push($(this).val());
                }
            });
            alert( arr_sort );
        });
    });
    
    2 回复  |  直到 10 年前
        1
  •  1
  •   lennon310    10 年前

    尝试替换 arr_sort.push( $( this ).val() );

    具有

    arr_sort.push( new Array( $( this ).val(), $( this ).attr( 'value2' ) ) );
    
        2
  •  0
  •   Raja Sekar    10 年前
     $(document).ready(function(){
    var arr_sort = [];
        $(".sort").change(function(){
            $(this).each(function(key,val){
                if( $(this).is(':checked') ){
                    arr_sort[ $(this).index() + 1] = $(this).val();
                }else{
                    arr_sort.remove($(this).val());
                }
            });
            console.log( arr_sort );
        });
    });
    
    Array.prototype.remove = function() {
        var what, a = arguments, L = a.length, ax;
        while (L && this.length) {
            what = a[--L];
            while ((ax = this.indexOf(what)) !== -1) {
                this.splice(ax, 1);
            }
        }
        return this;
    };
    
    1. 将ARRAY声明为[]以提高性能。
    2. 声明数组超出更改函数。
    3. 还要处理负面情况,如果值被删除,则应将其从数组中删除。