Checkbox事件和保持数组 - 如何在代码中处理?

时间:2014-10-30 13:38:39

标签: javascript jquery cordova

我的phonegap应用中有以下代码:

 function onDeviceReady() {
            var listOfSports = new Array(["Aikido"],["Air Sports"],["American Football"],["Angling"],["Archery"],["Yoga"]);
            $.each(listOfSports, function (i) {
                console.log(i);
                var li = $('<li><input class="checkbox" type="checkbox"' + 'id="' + listOfSports[i] + '"' + 'label="' + listOfSports[i] + '">' + listOfSports[i] + '</li>')
                    .appendTo("ul.listViewContainer");
            });
            $("#listViewContainer").listview();
            $("#listViewContainer").listview("refresh");
        }

如何获取已检查项目的值并在选中时将值添加到数组中或在未选中时将其删除?

1 个答案:

答案 0 :(得分:1)

像这样的东西。这会将所有复选框ID存储在一个数组中。

var arr = [];

function onDeviceReady() {
        var listOfSports = new Array(["Aikido"],["Air Sports"],["American Football"],["Angling"],["Archery"],["Yoga"]);
        $.each(listOfSports, function (i) {
            console.log(i);
            var li = $('<li><input class="checkbox" type="checkbox"' + 'id="' + listOfSports[i] + '"' + 'label="' + listOfSports[i] + '">' + listOfSports[i] + '</li>')
                .appendTo("ul.listViewContainer");
        });
        $("#listViewContainer").listview();
        $("#listViewContainer").listview("refresh");

        $(".checkbox").click(function () {
            if ($(this)[0].checked)
            {
                arr.push($(this).attr("id"));
            }
            else
            {
                arr = $.grep(arr, function( a ) {  
                           return a != $(this).attr("id");
                      });
            }
        });
    }

修改:

只是一个小错误。这里有一个小提琴:http://jsfiddle.net/wyfr8/207/

        else
        {
            var check = $(this);
            arr = $.grep(arr, function( a ) { 
                       return a != $(check).attr("id");
                  });
        }