【问题标题】:Checkbox unchecked state复选框未选中状态
【发布时间】:2013-09-27 15:04:04
【问题描述】:

我有以下函数,它返回一个已选中复选框的数组。

function grabData(checked) {
    return $('.product_category_selector' + (checked? ':checked' : ':not(:checked)')).map(function (index, chk) {
        return $(chk).data('id');
    }).get();

在我的主要处理功能中,我目前将“状态”硬编码为1

使这种动态变化的最佳方法是什么?

完整代码:

        $('body').on("click", "#brands_by_category_submit_btn", function (e) {
             e.preventDefault();               
            var self       = $(this);
            var sortOrder  =  []; 
            var id         = $("#manID").data("id");
            var brand_name = $("#brand_name").data("id");
            var data       = grabData(true);

            $(".order").each(function(){
                sortOrder.push($(this).val());
            })

            if(data.length)
            {
                var data_array = { 
                    id : id,
                    brand_name : brand_name, 
                    cat_id     : data,
                    sortOrder  : sortOrder, 
                    state      : 1
                };

【问题讨论】:

  • 状态是什么意思?
  • 应该为动态状态分配什么值?
  • @Sudhir State 是复选框的0和1的选中状态
  • @RohanKumar State 应该是 0 或 1 但这取决于数据中的内容
  • 由于您在方法中对检查状态进行硬编码....没关系..否则您可以使用像checked ? 1 : 0这样的三元运算符

标签: javascript jquery checkbox


【解决方案1】:

使用:checked 选择器只获取您感兴趣的那些,然后将这些data-id 属性映射到一个数组。

没有grabData() 调用:

var $checked = $(":checked");
var data = $.map($checked, function(item){ return item.attr('data-id') });

grabData() 通话:

function grabData(){
    var $checked = $(":checked");
    var data = $.map($checked, function(item){ return item.attr('data-id') });

    return data;
}

var data = grabData();

【讨论】:

  • 那我可以使用同一个数据数组吗?
  • 我是说你甚至不使用grabData 函数。或者,如果您愿意,请将其移至 grabData 并添加 return data;
  • 我收到错误 Uncaught TypeError: Object # has no method 'attr'
  • 你能举个例子把它移到grabData
  • 在这一行`var data = $.map($checked, function(item){ return item.attr('data-id') });`我得到Uncaught TypeError: Object #<HTMLOptionElement> has no method 'attr'
猜你喜欢
  • 2016-06-19
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多