如何在jQuery数据中设置属性内的属性()

125*_*748 -1 javascript jquery jquery-data

如果我知道元素上存在某个数据属性并且它是一个对象,那么如何将某些东西存储为该数据对象的新属性?

例如,我有这个div:

<div id="theDiv" data-test1="{string: 'test 1 data'}"></div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样设置数据:

div.data(["test1"]["number"], 1);
Run Code Online (Sandbox Code Playgroud)

但这让我无处可去.而div.data(["test1"]["number"]) = 1;让我在分配错误左手侧.

http://jsfiddle.net/VM8VW/

Poi*_*nty 5

您必须获取该值,然后重新保存它:

div.data('test1', function(prev) {
  prev.number = 1;
  return prev;
}(div.data('test1')));
Run Code Online (Sandbox Code Playgroud)

这样做可能是安全的:

div.data('test1').number = 1;
Run Code Online (Sandbox Code Playgroud)

但那种事情给了我一些意志力.

编辑 - 如果你想让jQuery理解你的JSON,它必须是有效的:

<div id="theDiv" data-test1='{"string": "test 1 data"}'></div>
Run Code Online (Sandbox Code Playgroud)

仅限双引号,还必须引用属性名称.