我有一个带有一些多选列表的简单应用程序。我需要存储这些列表中的选项,以便稍后在计算中使用它们。 由于没有存储大量数据,我以为我会使用jquery的data()。 我已多次使用它来存储单个值,但无法获得正确的语法来存储多个选择。 我可以使用类似下面的内容来保存这些值,还是会删除每个循环中的上一个值?
function storeCheckBoxes($this) {
//save a list of checkbox values
var key;
$("input:checkbox").each(function () {
if ($this.is(":checked")) {
key = $this.attr("id");
value = $this.val();
$("#services").data(key, value);
}
});
}
如何将多个项目存储到单个dom元素中?
由于
答案 0 :(得分:0)
您的代码存在的问题是,您在每次迭代时都使用相同的key
和value
。
我认为您将$this
与$(this)
混为一谈。 $this
指的是您传递给storeCheckBoxes
函数的元素,因此您可以使用$this.val()
一遍又一遍地设置相同的数据属性。
您可能希望从复选框中获取数据,因此您希望在$(this)
循环中使用.each
。 $(this)
循环中的.each
引用复选框,而不是传递给storeCheckBoxes()
的原始元素。
此外,当您使用复选框的ID作为key
时,您还要确保每个复选框都有唯一的ID。
function storeCheckBoxes($this) {
// save a list of checkbox values
$("input:checkbox").each(function () {
if ( $(this).is(":checked") ) {
var key = $(this).attr("id");
var value = $(this).val();
$("#services").data(key, value);
}
});
}
答案 1 :(得分:0)
我从您的问题中得到的结果是,您要将key
和value
存储在不同的data-attributes
中。
你在做什么
$("#services").data(key, value);
假设: -
key='a' and value= 12 and services is a div
它会添加一个data-attribute
,其值为12,可以使用键'a'
来检索。
$("#services").data('a'); will give you 12
如果您要插入多个data-attributes
,则必须为每个项目设置一次data
属性。
喜欢吼叫
$("#services").data('key', key);
$("#services").data('value', value);