javascript - 简单的 jQuery 过滤器功能无法正常工作

标签 javascript jquery

问题说明: 我在 DOM 周围放置了输入元素:

<input type="checkbox" data-filter="markets" data-cid="4" name="checkbox">
<input type="checkbox" data-filter="categories" data-cid="30" name="checkbox">

当我选中任何复选框时,我应该得到这样的 JSON 对象:

{"categories":["4,5"],"markets":["30,31,32"]}

但是我得到这样的对象:

{"categories":["30,31,32,4,5"],"markets":["30,31,32,4,5"]} 

30,31,32 是市场,4,5 是类别。也许有人可以告诉我,问题出在哪里?

$(document).on('change',"input[name=checkbox]", function() {
    page = 0;
    var $this = $(this);
    if ($this.prop('checked')) {
        $this.addClass("checked");   
    } else {
        $this.removeClass("checked");
    }
    filter();
});

var filter = function() {
    var myObject = new Object(); 
    $('.checked').each(function(n) {            
        var objname = $(this).data('filter');

        arr = $('.checked').map(function() {
            return $(this).data('cid');
        }).get().join(",");

        if(arr.length > 0) {
            myObject[ objname ] = [ arr ];            
        }
    });
    console.log(JSON.stringify(myObject));
    return JSON.stringify(myObject);
}

filter();

最佳答案

尝试

var filter = function () {
    var myObject = {};
    $('.checked').each(function (n) {
        var objname = $(this).data('filter');
        var array = myObject[objname] = myObject[objname] || [];
        array.push($(this).data('cid'))
    });
    console.log(JSON.stringify(myObject));
    return JSON.stringify(myObject);
}

演示:Fiddle

关于javascript - 简单的 jQuery 过滤器功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22451745/

相关文章:

java - 使用 CometD Java 客户端发布可由 Javascript 订阅者使用的消息

javascript - promise 回调是否发送到事件队列?

javascript - 查找过去 7 天内的平均事件数

javascript - 在 IE8 中使用 javascript 获取伪内容

javascript - 按钮 onclick 在其位置更改时不会触发

javascript - 我可以在不使用 eval() 的情况下构建我的 jQuery Promise 管道链吗?

javascript - 可嵌套列表 - 禁止将子项移出父元素

JavaScript函数指针问题

jquery - Bootstrap 3 DateTimepicker 首先显示TimePicker

javascript - 从段落标记中获取值