`

HTML5的data属性

 
阅读更多

新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取。它的数量不受限制,并且也能由javascript动态修改,也支持CSS选择器进行样式设置。这使得data属性特别灵活,也非常强大。有了这样的属性我们能够更加有序直观的进行数据预设或存储。下面介绍HTML5 Dataset 存储的实际应用,以及包括jQuery在内的四种存取方式。

HTML5 Dataset 存储的例子

为一个元素分配data属性存储数据,例如这是一个span元素,它的内容是一首音乐的名称,我们为其HTML标签里直接预置这首歌的更多信息,在HTML源码上看起来可以这样来写:

<span id="music-latch" class="musique"
data-date="2013"
data-genre="Electronic"
data-album="Settle (Deluxe)"
data-artist="Disclosure"
data-composer="Howard Lawrence & Guy Lawrence">
Latch (feat. Sam Smith)
</span>

 

这样,我们就很简单的为这首歌在span标签里直接内嵌了其专辑、艺术家和流派信息。

再举一个例子,比如说一个本地化翻译的嵌入:

<h2 id="food-pkd" class="food"
data-en="Peking Duck"
data-available
data-ja="北京ダック"
data-fr="Canard laqué de Pékin"
data-de="Pekingente">
北京烤鸭
</h2>

 

这样一来,在不改变网页外观的情况下,我们可以在设定机器翻译的同时检测data-XX,来人工提供更准确精准的翻译。

其中data-available没有值,允许空值,例如在这个情况下,它仅代表该食物可以订购,所以不需要有值。

利用 getAttribute、setAttribute 存取 dataset

作为HTML元素的标签,dataset的存取也服从getAttribute、setAttribute,而且这两个方法兼容性也最广。

例如对于上面的两个例子,我们可以运行

    //get

    var album = document.getElementById("music-latch").getAttribute("data-album");

    console.log(album);

    //set

    document.getElementById("food-pkd").setAttribute("data-en","Beijing Stuffed Duck");

 

这样就可以以一种更兼容的方式,来存取dataset数据。所做出的任何更改,都是可以实时反映到元素data属性上的。

但是这种方法比较低端,如果遇到多个data-*自定义字段,想要一次全部获取所有的data属性并包装成对象的话,还必须做一个循环,很麻烦。不过我们还有Dataset API可用。

利用 dataset API 存取 dataset

通过.dataset API,我们可以更方便的获取元素的所有data字段,并以对象的方式,方便存取和遍历。例如,对于上面的例子,可以运行

    //get

    var songd = document.getElementById("music-latch").dataset;

    var album = songd.album;

    console.log(album);

    //set

    document.getElementById("food-pkd").dataset.en = "Beijing Stuffed Duck";

    //add

    document.getElementById("food-pkd").dataset.es = "Pato laqueado a la pekinesa";

 

这时候我们在访问data时,就不需要"data-"关键词了,直接利用.dataset.name就可以访问到。这比上面的方法更方便。所做出的任何更改,都是可以实时反映到元素data属性上的。

如果涉及到连字符"-",可以采取驼峰化的方法来存取:

<span id="en" data-en-us="Peiking Duck"></span>

 其中en-us要写成enUs:

var en = document.getElementById("en").dataset.enUs;

 

利用 jQuery.attr 方法存取 dataset

jQuery有着出色的兼容性。类似get、setAttribute,jQuery的.attr()方法同样可以用在这样的情况下,例如,对于上面的例子,可以运行

    window.jQuery && (function($){

    //get

    var album = $("#music-latch").attr("data-album");

    console.log(album);

    //set

    $("#food-pkd").attr("data-en","Beijing Stuffed Duck");

    })(window.jQuery);

 

这与jQuery.attr运用在其他属性上时的情况完全一样,并且所做出的任何更改,都是可以实时反映到元素data属性上的。

利用 jQuery.data 方法存取 dataset

jQuery从1.4.2版本开始支持$.data()方法来直接访问data属性,同时也不需要写"data-"关键词了,例如,对于上面的例子,可以运行

    window.jQuery && (function($){

    //get

    var album = $("#music-latch").data("album");

    console.log(album);

    //set

    $("#food-pkd").data("en","Beijing Stuffed Duck");

    })(window.jQuery);

 

这样的方法也能出色的存取data属性,但是需要注意,jQuery.data对data数据做出的更改,不会反映到HTML元素data属性上。

也就是说,jQuery现在认为#food-pkd元素的data-en为"Beijing Stuffed Duck",但是在HTML元素上,其值还是没有改变,仍为"Peking Duck":

    window.jQuery && (function($){

    //set

    $("#food-pkd").data("en","Beijing Stuffed Duck");

    console.log( $("#food-pkd").data("en") );

    // log: "Beijing Stuffed Duck"

    })(window.jQuery);

    console.log( document.getElementById("food-pkd").dataset.en );

    // log: "Peking Duck"

 

jQuery.data 解析 Dataset 的 JSON 信息

事实上,jQuery还可以很聪明的从data里提取出json信息转换为对象:

<span id="song-jsn"
data-meta='{"name":"Latch", "album":"Disclosure", "date":"2013"}'>
Latch (feat. Sam Smith)
</span>

 

window.jQuery && (function($){
var jsn = $("#song-jsn").data("meta");
console.log( jsn.album );
// log: "Disclosure"
})(window.jQuery);

 

这样,你就可以不必写一堆 data-album、data-lyrics、data-artist了,你可以直接把所有歌曲信息全部写到JSON里放到一个单独的data标签里!

CSS、jQuery 查找 data 属性对应元素

如果我想要所有专辑名(data-album)为Disclosure的歌曲名显示为红色,在CSS选择器里,我们可以这样去匹配

.musique[data-album='Disclosure']
{
color:red;
}

 

window.jQuery && (function($){
$(".food").filter("[data-available]").each(function(){
$(this).click(function(){
alert("It's Available!");
});
});
})(window.jQuery);

 

 

 

0
0
分享到:
评论

相关推荐

    html5的data-role的属性

    HTML5的`data-*`属性,特别是`data-role`,是jQuery Mobile框架中用来初始化和配置小部件的关键特性。这些自定义属性允许开发者通过标记直接设置组件的行为和配置,为移动应用开发提供了便利。虽然使用`data-*`属性...

    Html5之自定义属性(data-,dataset)

    H5为我们提供了以 data- 为前缀定义需要的属性即可设置自定义属性 &lt;div id=box1 data-name=Musk&gt; &lt;div id=box2 data-full-name=Elon&gt; 获取 使用H5自定义属性对象dataset来获取 let box1 = document.getElementById...

    HTML5如何添加自定义标签属性(data-自定义属性).zip

    HTML5如何添加自定义标签属性(data-自定义属性).zip

    js 获取html5的data属性实现方法

    本篇文章将详细介绍如何使用JavaScript获取HTML5的data属性。 首先,我们需要了解data-*属性的工作原理。在HTML元素中,我们可以定义任何数量的data-*属性,其中“*”可以替换为任意合法的属性名称。例如: ```...

    详解HTML5 data-* 自定义属性

    在jQuery的attr与prop提到过在IE9之前版本中如果使用property不当会造成内存泄露问题,而且关于Attribute和Property的区别也让人十分头痛,在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-...

    HTML5+CSS3从入门到精通分享 data属性的使用方式.docx

    HTML5的data属性是一个强大的工具,它允许开发者在HTML元素中存储自定义的数据,这些数据对用户来说通常是不可见的,但可以在JavaScript中被轻松访问和处理,从而增强网页的交互性和功能。这个属性遵循一个特定的...

    jquery html5步步高vivo官网全屏焦点图片动画效果代码

    将图片作为元素添加到.slider-container中,并利用HTML5 data属性存储图片相关信息,例如索引和链接: ```html &lt;div class="slide" data-index="0" data-url="img1.jpg"&gt; &lt;div class="slide" data-index="1" data-...

    css3伪元素和data属性创建漂亮的图片caption标题动

    接着,我们要讨论HTML5的data属性。data属性允许我们在HTML元素上自定义数据,这些数据对用户是不可见的,但可以通过JavaScript或CSS进行访问。例如,我们可以为每个图片元素添加一个"data-title"属性,存储对应的...

    JS实现获取自定义属性data值的方法示例

    本文实例讲述了JS实现获取自定义属性data值的方法。分享给大家供大家参考,具体如下: HTML部分: &lt;div id=tree data-leaves=47 data-plant-height=2.4m&gt; js部分: var tree = document.getElementById(tree); //...

    方便打印的jQuery mobile data属性

    本文主要关注jQuery Mobile中的一个关键特性——data属性,这些属性用于定制和增强UI元素的功能和外观,使其更适合打印和学习。 首先,我们来看`data-role="button"`属性,它用于将HTML元素转化为jQuery Mobile的...

    micron.js可生成炫酷CSS3动画的js动画库的插件

    并能通过js代码或html5 data属性来串联各种CSS3动画效果。简单实用,欢迎下载!本代码适用浏览器:搜狗、360、FireFox(建议)、Chrome、Safari、Opera、傲游、世界之窗,不支持IE8及以下浏览器,首选火狐浏览器。是一...

    jQuery Mobile Data 属性

    jQuery Mobile 使用 HTML5 data-* 属性来为移动设备创建更具触摸友好性和吸引性的外观。 在下面的参考列表中,粗体显示的值为默认值。 按钮 在1.4 版本以后已废弃。使用 CSS 类 替代。带有 data-role=”button” 的...

    HTML5新增属性data-*和js/jquery之间的交互及注意事项

    HTML5的data-*属性是为了解决网页或应用程序中存储私有自定义数据的需求而引入的新特性。这个属性允许开发者在HTML元素上嵌入自定义的数据,而不影响标准的语义。data-*属性的命名规则非常简单:以"data-"开头,后面...

    ExtTag,获取HTML自定义属性

    在HTML5中,自定义属性通常以"data-"为前缀,例如"data-custom-attr"。这样的属性不会被浏览器解析,但可以在JavaScript中通过DOM API访问。`ExtTag`的功能可能是将这些"data-"属性转换为JavaScript对象,使得我们...

    html5的自定义data-*属性和jquery的data()方法的使用示例

    HTML5中的自定义`data-*`属性是为了解决在HTML元素上存储额外数据的需求而引入的。这些属性允许开发者在不破坏HTML结构和语义的前提下,附加自定义的、非标准的数据。通常,这些数据在页面呈现时并不会直接显示,但...

    HTML5自定义data-* data(obj)属性和jquery的data()方法的使用

    在JavaScript原生API中,可以使用`dataset`属性来访问data属性,如`elem.dataset.chb`。在给出的例子中,这段代码会在页面加载时遍历所有的div元素,查找具有"data-chb"属性的元素,并为其添加一个"class"为"ui_...

    日期选择器插件(一共五个在)

    它通过简单的API调用和HTML5 data属性就能快速配置。例如,你可以通过`data-date-format`来设置日期格式,通过`data-date-start-date`和`data-date-end-date`来限制可选日期范围。 2. **Pickadate.js** Pickadate....

    JS组件系列之使用HTML标签的data属性初始化JS组件

    在标题"JS组件系列之使用HTML标签的data属性初始化JS组件"中,提到的关键知识点是: 1. **HTML的`data-*`属性**:这是一种HTML5引入的新特性,允许开发者在元素上存储自定义的数据,其名称由"data-"前缀和任意字符...

    select下拉列表显示图片内容

    3. **HTML5 data属性**: HTML5的`data-*`属性可以用来存储自定义数据,比如可以将图片URL存储在`data-image`属性中。然后在JavaScript中解析这些数据,动态创建包含图片的DOM元素。 4. **jQuery实现**: 描述中...

    html5的自定义data-*属性与jquery的data()方法的使用

    你可以去读一下HTML5的详细规范,但这个自定义data属性的用法非常的简单,就是你可以往HTML标签上添加任意以 data-开头的属性,这些属性页面上是不显示的,它不会影响到你的页面布局和风格,但它却是可读可写的。...

Global site tag (gtag.js) - Google Analytics