从复选框中获取值,组合每个Div的相应数据,以及更改数据视图

时间:2015-11-08 22:32:51

标签: jquery arrays foreach

我有一堆包含数据状态数据县数据城市数据视图的div

我还有三个复选框,其值为数据状态数据县数据城市。我希望能够检查它们,并根据检查的内容,将每个div的相应数据合并到一个新的数据视图中。

到目前为止,我有我的按钮:

$("#change").click(function(){
  var checkedViews=[];
  $("input[type='checkbox']:checked").each(function(){
  checkedViews.push($(this).val());
  });
});

因此,例如,数据状态数据城市,其中一个div现在应该具有 data-view =“connecticut_bridgeport” 即可。我已经开始使用jsfiddle了,但是我在获取检查值后不知道该去哪里。

https://jsfiddle.net/xbgu1sL6/

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

构造checkedViews数组后,然后使用类'info'遍历每个div元素,并根据数组的元素更新'data-view'属性。我这样做的方法是:我循环遍历列表的每个元素(这是一个形式为“data- *”的字符串),我使用这个字符串作为jquery .attr()函数的参数。这意味着所选择的每个属性的值都附加到我定义的'view'字符串以及每个属性后面的下划线,并且因为每个值都附加了下划线,所以我必须删除最后一个(即最后一个)字符串的字符)。为此,我使用.slice()函数。

以下是代码:

$("#change").click(function(){
    var checkedViews=[];
    $("input[type='checkbox']:checked").each(function(){
    checkedViews.push($(this).val());
    });

    $(".info").each(function () {   // for each div with class 'info'
        var info = $(this);
        var view = "";   // this will be the new value for data-view
        if (checkedViews.length == 0) view = "blank_";
        checkedViews.forEach(function (cv) {  
            view += info.attr(cv) + '_';   // append the value of selected attribute along with an underscore
        });
        view = view.slice(0, -1);   // remove last character
        $(this).attr("data-view", view);   // update data-view
    });
}); 

你也可以在jsfiddle上看到它:JSFiddle