繁体   English   中英

HTML5 中是否可以有多个 data-{name} 属性?

[英]Is it possible to have multiple data-{name} atributes in HTML5?

有没有办法从此元素中获取所有 3 个数据值?

 <div id="viewport" 
    data-requires='js/base/paths'
    data-requires='js/base/dialog'
    data-requires='js/base/notifier'>

这对我正在启动的项目非常有用。 有了这个,我可以加载所需的 js 模块并将它们链接到 dom。 我知道这听起来可能很奇怪,但我正在尝试一些新的东西。

您的问题的答案是 HTML 不支持同一属性的多个实例。 您可能会检索该属性的所有典型方法只会检索这三种方法中的一种。

解决这个问题的通常方法是使用属性的单个实例并将多个路径作为值。 对于路径,它们通常用分号分隔。

<div id="viewport" data-requires='js/base/paths;js/base/dialog;js/base/notifier'>

并且,然后使用代码将多值属性分解为数组。

var requiredPaths = document.getElementById("viewport").getAttribute("data-requires").split(";");

您可以在data-属性中使用更复杂的结构。

取而代之的是:

<div id="viewport" 
data-requires='js/base/paths'
data-requires='js/base/dialog'
data-requires='js/base/notifier'>

你可以这样做:

<div id="viewport"
data-requires='["js/base/paths", "js/base/dialog", "js/base/notifier"]'>
</div>

使用jQuery.data()证明jQuery.data()这种方式检索数组: jQuery('#viewport').data('requires') )在这里: http : //jsfiddle.net/3StZs/

如果您用某种东西将它们分开,然后将它们分开并放在一个数组中,则可以将它们全部放在一起。

var arrayData = document.getElementById('viewport').getAttribute('data-requries');
var arr = arrayData.split(',');

for (i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

http://jsfiddle.net/S7D2D/1/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM