Html5和data-*属性?

Roy*_*mir 6 html javascript jquery html5 custom-data-attribute

完全尊重Html5数据属性

当我有这样的代码:

 <li class="user" data-name="Royi Namir" data-city="Boston" data-lang="js" data-food="Bacon"> </li>
Run Code Online (Sandbox Code Playgroud)

我在文档中添加了很多冗余字符.

需要这种类型data-XXX:

myDomElement.dataset[xxx];

但是,我可以轻松地做到这一点

<li class="user" dn="Royi Namir" dc="Boston" dl="js" df="Bacon"> </li>
Run Code Online (Sandbox Code Playgroud)

没有那些额外的data-前缀(并节省了很多额外的字符).并通过"开始时"选择器来读取它,如[d ^] - jQuery API

我在这里错过了什么吗?

Den*_*ret 14

你可以用这个:

<li class="user" data-user='{"name":"Royi Namir", "city":"Boston", "lang":"js", "food":"Bacon"}'> </li>
Run Code Online (Sandbox Code Playgroud)

然后

var user = JSON.parse(element.dataset.user);
Run Code Online (Sandbox Code Playgroud)

使用jQuery,它甚至更简单:

var user = $(element).data('user');
Run Code Online (Sandbox Code Playgroud)

如果你想得到所有用户:

var ?users = $('[data-user]').map(function(){return $(this).data('user')});
Run Code Online (Sandbox Code Playgroud)

可以减少冗余和直接使用的结构,尤其是具有更深层属性的结构.数据属性不仅适用于字符串.

但关于data-属性的要点是规范化实践.现在,在查看HTML时,显而易见的是,标准HTML(视图)属性是什么属性,哪些属性是数据属性(特定于应用程序逻辑).