如何将值从元素推送到jQuery data()对象?
假设你有:如何将值从元素推送到jQuery data()对象?,jquery,Jquery,假设你有: <a href="#" data-mydata="{'key':[value1, value2, value3]}">LINK</a> 这也不起作用: var mykey = $('a').data('mydata').key; $('a').data('mydata.key', mykey.push('value4')); var mykey = $('a').data('mydata').key; $('a').data('mydata', '{"ke
<a href="#" data-mydata="{'key':[value1, value2, value3]}">LINK</a>
这也不起作用:
var mykey = $('a').data('mydata').key;
$('a').data('mydata.key', mykey.push('value4'));
var mykey = $('a').data('mydata').key;
$('a').data('mydata', '{"key":'+mykey.push('value4')+'}');
我也没有发现这是有效的:
var mykey = $('a').data('mydata').key;
$('a').data('mydata.key', mykey.push('value4'));
var mykey = $('a').data('mydata').key;
$('a').data('mydata', '{"key":'+mykey.push('value4')+'}');
我一定是漏掉了什么。评估有效,但被认为是危险的,正如格多龙所说。在jQuery数据中设置对象的方法是只设置它们,而不用自己序列化它们。所以最好的方法是:
values = $('a').data('mydata').key;
values.push('value4')
$('a').data('mydata', {'key': values});
但这意味着您不应该这样设置html元素的data mydata属性,而应该使用jQuery动态设置它:
$('a').data('mydata', {'key': [value1, value2, value3] });
您可以在页面加载时调用它来初始化元素上的数据。jQuery将负责序列化数据并保存它。Eval可以工作,但被认为是危险的,正如gdoron提到的那样。在jQuery数据中设置对象的方法是只设置它们,而不用自己序列化它们。所以最好的方法是:
values = $('a').data('mydata').key;
values.push('value4')
$('a').data('mydata', {'key': values});
但这意味着您不应该这样设置html元素的data mydata属性,而应该使用jQuery动态设置它:
$('a').data('mydata', {'key': [value1, value2, value3] });
您可以在页面加载时调用它来初始化元素上的数据。jQuery将负责序列化数据并保存数据。只需直接更新
mykey
:
var mykey = $('a').data('mydata').key;
mykey.push('value4');
console.log(mykey); // ["value1", "value2", "value3", "value4"]
console.log($('a').data('mydata').key)// ["value1", "value2", "value3", "value4"]
注意:我修复了数据属性,使其具有有效的json,以便jQuery可以将其作为对象正确解析。还将值用引号括起来。直接更新
mykey
:
var mykey = $('a').data('mydata').key;
mykey.push('value4');
console.log(mykey); // ["value1", "value2", "value3", "value4"]
console.log($('a').data('mydata').key)// ["value1", "value2", "value3", "value4"]
注意:我修复了数据属性,使其具有有效的json,以便jQuery可以将其作为对象正确解析。还将值用引号括起来。也许这会有用:
var mykey = $('a').data('mydata').key;
mykey.push('value4');
$('a').data('mydata', mykey);
我不确定最后一行,但你们可以在这里尝试三个例子。但是使用array而不是arra.push作为值。也许这会有用:
var mykey = $('a').data('mydata').key;
mykey.push('value4');
$('a').data('mydata', mykey);
我不确定最后一行,但你们可以在这里尝试三个例子。但是使用array而不是arra.push作为值。
mykey.push('value4')
返回数组项的数量,而不是一个或多个值mykey.push('value4')
返回数组项的数量,而不是一个或多个值我不知道为什么以前无法使用它。我也试过了,只是忘记了这里[]周围的引号,在我的代码中有它们。此外,如果值是数字,则不必将值用引号括起来,我猜示例代码对此并不清楚。正确,只要它是有效的json,就好,我假设你有有效的json,这就是为什么我将其作为注释提及,而不是答案的一部分。我不知道为什么我以前无法实现这一点。我也试过了,只是忘记了这里[]周围的引号,在我的代码中有它们。另外,如果值是数字,则不必将值用引号括起来,我想示例代码对此并不清楚。正确,只要它是有效的json就好,我假设您有有效的json,这就是为什么我将其作为注释而不是答案的一部分提到。