Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将值从元素推送到jQuery data()对象?_Jquery - Fatal编程技术网

如何将值从元素推送到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,这就是为什么我将其作为注释而不是答案的一部分提到。