我有一堆包含数据状态,数据县,数据城市和数据视图的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/
感谢您的帮助。
答案 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