Jquery data()存储多个值

时间:2015-01-05 03:53:27

标签: javascript jquery

我有一个带有一些多选列表的简单应用程序。我需要存储这些列表中的选项,以便稍后在计算中使用它们。 由于没有存储大量数据,我以为我会使用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元素中?

由于

2 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,您在每次迭代时都使用相同的keyvalue

我认为您将$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)

我从您的问题中得到的结果是,您要将keyvalue存储在不同的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);

DEMO