在jquery中访问data-*

use*_*915 0 html javascript jquery html5

我有一个格式如下:

<div data-role="page" data-last-value="43" data-hidden="true" 

data-bind='attr : {"name":"John"}'></div>
Run Code Online (Sandbox Code Playgroud)

我想把名字从" John "改为" Johnny ".我试图这样做:

$(document).ready(function() {
    alert($( "div" ).data( "options"));

});
Run Code Online (Sandbox Code Playgroud)

这输出我:

attr : {"name" : "John"}
Run Code Online (Sandbox Code Playgroud)

我尝试访问考虑它像json格式, alert($( "div" ).data( "options").attr)但是它是undefined.

它是否为字符串格式,我应该将其设置为某个变量,使用正则表达式并更改字符串格式?如何使用jquery更改它?

Sat*_*pal 6

您没有使用正确的格式,请 使用

<div data-options='{ "attr" : {"name":"John"}}'></div>
Run Code Online (Sandbox Code Playgroud)

var div = $("div");
var data = div.data("options")
console.log(data.attr)

//update name
setTimeout(() => {
  data.attr.name = 'Satpal';
  div.data("options", data);

  data = div.data("options")
  console.log(data.attr);
}, 2000)
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-options='{ "attr" : {"name":"John"}}'></div>
Run Code Online (Sandbox Code Playgroud)