循环复选框和构建的JavaScript对象文字

时间:2013-04-30 01:11:12

标签: javascript jquery object-literal

嘿所有我试图找出一种方法将数据添加到JS对象,当我循环查看页面上的哪些复选框时:

jQuery('#doaction').click(function () {
    var bulkSelected = jQuery('#bulkAction').val();
    var checkCount = 1;

    if (bulkSelected == 0) {
        console.log('no bulk selected category');
        jQuery('#overlay-shade').fadeOut(300);
    } else {
        var doBulk = {
            called: '' + bulkSelected + '',
        };

        jQuery('input[type=checkbox]').each(function () {                           
            if (jQuery(this).attr('id') != 'selectAll') {
                var isChecked = (this.checked ? true : false);

                if (isChecked == true) {
                    console.log(jQuery(this).attr('id'));
                    console.log(jQuery(this).attr('data-accnum'));
                }
                checkCount++;
            }
        });

    }

.attr(' data-accnum')的数字如下所示。我需要它采用这种格式:

(复选框名称:accnum)

var doBulk = {
    chk1: 52136523168,
    chk2: 54298851631
    ect..ect...
};

我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试:

var doBulk = {};
jQuery('input[type=checkbox]').each(function () {                           
    if (jQuery(this).attr('id') != 'selectAll') {
        var isChecked = (this.checked ? true : false);

        if (isChecked == true) {
            doBulk[jQuery(this).attr('id')] = +jQuery(this).attr("data-accnum");
        }
        checkCount++;
    }
});
console.log(doBulk);

答案 1 :(得分:0)

jQuery有一个:checked选择器,以及一个not方法,我们只使用它来获取非#selectAll的所有选中输入。

然后,您只需使用bracket notation将其添加到doBulk对象,就可以从doBulk函数中访问each对象,因为javascript有closures

    var doBulk = {}
      , checked = jQuery('input[type=checkbox]:checked').not('#selectAll')
      , checkCount = checked.length;

    checked.each(function () {                           
      doBulk[this.id] = jQuery(this).attr('data-accnum');
    });