复选框值数组添加和从数组中删除

时间:2011-09-05 23:55:48

标签: jquery

我有以下代码将复选框值推送到数组。如果取消选中复选框,我希望能够从数组中删除值。任何人都可以告诉我如何做到这一点。

var arr_sort = new Array();

$(".sort").change(function(){

        $.each($("input[name='sort']:checked"), function() {
           arr_sort.push($(this).val());
        });

    });

5 个答案:

答案 0 :(得分:2)

- 如果触发事件不是复选框的点击事件,请忽略答案。

你应该创建一个小函数,在复选框的click事件触发器上删除数组中的值。

function removeVal(arr, val)
{
    for(var i = 0; i < arr.length; i++)
    {
        if (arr[i] == val)
            arr.splice(i, 1);
    }
}

找到下面的工作示例:

http://jsfiddle.net/7NcuD/

答案 1 :(得分:1)

答案:http://jsfiddle.net/morrison/S3e2f/

备注:

  • 使用键/值系统。这样您就可以知道要设置或取消设置的数组项。这可能意味着给你的复选框命名。
  • 每次更改时都不要遍历数组。这是糟糕的设计并可能导致性能不佳。我重组了HTML。

答案 2 :(得分:1)

由于您正在循环查看任何更改的排序复选框,因此最简单的解决方法是在arr_sort之前清空$.each()数组吗?

答案 3 :(得分:0)

$(".sort").change(function()
{
    var arr_sort = new Array();
    $(".sort").each(function()
    {
        if( $(this).is(':checked') )
        {
            arr_sort.push($(this).val());
        }
    });
});

Live Demo

答案 4 :(得分:0)

您可以使用map或grep删除数组中不符合条件的元素。类似的东西:

var arr_check = $.grep(arr_sort,function(value){return value == ?? ;}); // since you're saving $(this).val() your array has checkbox value, so you have to filter with those values.