《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 2.7 数据属性

2.7 数据属性

HTML5扩展元素含义还可以通过另一种方式:使用数据属性。这些都是用户定义的属性,这些属性的值能提供元素的相关信息,而无需给予机器或人类任何额外的语义。接下来,让我们看看更详细的解释。

假设我们想输出一组数据,其中每一项都有两个值—名称和编号 (例如,独特的数据库ID);我们想将名称显示在文档中,还想让编号可以用于脚本运行中。从目前情况来看,没有相关的属性可以用来存储该信息;我们可能不得不使用这样一个类:

创建数据属性的目的,就是为了将数据相关联。数据属性能像类一样,让你存储这些额外的信息,而不暗含任何额外的意思。每个数据属性开始使用文字数据,然后使用用户定义的唯一键。在我们的示例中,可以使用这个:

现在,数据属性id与Peter的值关联。虽然该属性没有给元素额外的语义,但是可以为其他进程提供上下文,有关此数据的信息或许和JSON文件相关联,所以,可以使用JavaScript来查询。

2.7.1 数据属性API

使用数据集(dataset)属性的简单DOM API,脚本可以更加容易地获取该数据。若要获取一个数据属性的值,可以将数据值属性和正在查询的属性的键一起使用:

当我们把它应用于此示例的标记中,返回的结果将是123。我们还可以使用数据集更新属性值:

以下示例,演示了它是怎么起作用的:

在此示例中,我们执行了三个操作:首先获取id数据,然后将其设置为100,最后再次获取它。每一次都要把结果登录到控制台。输出结果如图2-5所示。

2.7.2 jQuery和数据属性

如果使用jQuery,与数据属性的互动甚至会变得更简单(如果读者还不知道什么是jQuery,则可以先翻阅第5章中的解释,读完它之后再回到这一节)。下面的例子是使用data()方法获取和设置的数据值:

此代码类似于前一节所示的代码,将返回相同的值:123。

然而,不同于数据集以一个字符串的形式返回所有的结果,data()类函数有一大优势:它还要对属性的值进行解析,并将它转换为正确的类型。如果使用前面的示例,该类型会是一个数字。但如果把标记更改为:

再次使用data()类函数:

变量name的值是Peter,其类型是一个字符串。

若想看看它是怎么运行的,可以参考示例文件data-attributes-jquery .html.。在该示例文件中,我使用同一标记把两个不同的数据属性相结合:

再使用jQuery,把每个数据属性的类型用JavaScript的typeof运算符登录到控制台中:

图2-6显示了输出结果。

2.7.3 野生数据属性
数据属性如此有用,以至于一些公司已经开始广泛使用它们。Twitter很快就把它们用作一个在网页上添加Twitter按钮的选项,把某些内容相关的参数存储在一组预定义的属性里:

通过在网页上的其他位置包含一个对Twitter的JavaScript的调用,此元素被一个使用所提供数据的Tweet按钮所替换。很多其他的社会服务,如Facebook、Google+和LinkedIn,也采取相同的方式使用数据属性。

时间: 2024-11-03 22:04:10

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 2.7 数据属性的相关文章

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 导读

前言 移动网页设计与开发 HTML5+CSS3+JavaScript 我们正处于一个史无前例的网络创新时代.不久前,一家叫微软的公司主宰着网络世界,例如,2003年全球约95%的电脑使用IE浏览器.这种高度统治的优势是:为开发人员提供了一个稳定的市场:但同时也存在严重的缺陷:微软选择了结束IE浏览器的非核心工作,使得网络创新停滞不前--这就是一个缺乏竞争的封闭环境导致的结果. 现在的情形完全不同了,将近四五个主要浏览器厂商,大约相同数量的主要操作系统商,以及更多的团队一直参与其中.Adobe已经

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 第 1 章 网络平台

第 1 章 网络平台 移动网页设计与开发 HTML5+CSS3+JavaScript 在这一章里,我将谈论一些必要的网络技术,一些非常有用的知识,以及多设备网络工作的要求和规定.本章的目的确保我们的起点相同,这是一种比喻-我知道我们现在确实起点相同,因为你正在阅读这段话-但下一章才真正开始涉及技术内容. 如果读者渴望马上学习这些技术,则可以跳过这一章并直接阅读第2章.但我强烈建议读者不要这样做.因为第1章含有一些有趣且实用的背景信息.此外,技术含量较少的内容使我有机会表现我那令人惊叹的幽默感.

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 1.5 CSS3及其他

1.5 CSS3及其他 正如HTML5对应HTML4.01一样,CSS3对应的是CSS2.1.CSS3是对一些现有CSS2.1功能进行标准化的进化迭代:因为在不同浏览器中,这些功能的执行会略有差异.另外,在这个网络发展的新时代,网络浏览器可以被嵌入任何设备,所以CSS3还引入了一套全新的功能,使得CSS能符合新时代的要求. 改造浏览器的第一类CSS3功能在很大程度上是视觉效果上的,并且,这些功能基于开发人员已经使用多年的编辑程序:使用任何来源的字体.圆角,并在文本和框上放置阴影.登录之后是一系列

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 1.4  真正的HTML5

1.4 真正的HTML5 HTML5是HTML4.01的迭代,它在HTML4.01基础上添加了一些新功能,废弃或者删除了几项旧功能,并且对一些现有的功能进行了修改.编写HTML5的目的一是为了规范许多开发人员已使用多年的常见程序编辑和设计模式,二是为了满足现代网络的需求,这是因为,现代网络与应用程序的相关性和它与文档的相关性是一样大的(也可能更大).事实上,Web Applications 1.0是HTML5的前身. HTML5的新功能包括建立可提供含义和可接入性的文档,我会在第2章中介绍.HT

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 2.2 网页易读性倡议的无障碍的富因特网应用程序组件(WAI-ARIA)

2.2 网页易读性倡议的无障碍的富因特网应用程序组件(WAI-ARIA) 创建网页易读性倡议的无障碍的富因特网应用程序(Accessible Rich Internet Applications)组件(WAI-ARIA)的目的,就是为了解决可访问性的短缺.随着网络超越简单的文档标记,进入一个应用和交互的时代,可访问性短缺就产生了. 下面,我们来看看WAI-ARIA是如何做到这一点的.首先,创建一些HTML扩展(或者,事实上任何基于DOM语言的扩展都可以,例如SVG和XML的扩展):其次,允许开发

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 2.4 微格式

2.4 微格式 微格式由一群草根开发人员联合创建.通过使用现有属性的标准化标记模式,他们给内容添加上了更多的属性.微格式最大的魅力不在于它是HTML的扩展,而在于它使用当前的开发方法来工作.它既是一种设计原则,也是一组标准用法模式. 微格式多种多样,有相当复杂的微格式,也有极其简单的微格式.下面这个例子,可能是最简单的微格式: 这种微格式被称为Rel-Tag微格式.关键字是rel属性中的tag,它让其他机器知道URL链接到一个在a元素里的页面,这个页面由一个标签来描述,该标签的名称是URL的最后

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 2.6 微数据

2.6 微数据 通过创建被称为微数据的简单语法,HTML5解决了语义问题.根本上,微数据是一系列提供富有意义的机读数据的名称值对.和前面一样,与其设法去解释它,还不如使用这个更简单易行的方法-向读者展示它是如何运作的: 此标记创建了一个单项.itemscope属性被用于标记此特定项的界限或范围的包含元素.里面含有被称为property的名称值对:itemprop属性的值是名称-在此示例中,是"city"-而元素的内容是值-在此示例中,是"London".最后的结果是

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 1.6 浏览器支持

1.6 浏览器支持 现在,读者应当已经了解多设备网络非凡的广泛性和多样性:另外,在这些设备上运行的浏览器范围也相当广,甚至在各式各类的浏览器中,还有各种版本和实现(我希望你已经明白这一点,因为序言中大部分的内容都在试图说明这一点).因此,本书中所提到的一些功能有可能还没实现,或有可能在实现方式上略有不同. 对于每个新功能,我都将它们视为完全实现,而不涵盖每种不同级别的实现水平.另外,我还在附录A中介绍了这些新功能的实际实现. 此外,甚至最前沿的标准提案也会发生变化,即使是当某些浏览器中已经进行了

《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 1.3 了解什么是HTML5

1.3 了解什么是HTML5 关于HTML5到底是什么,还是有些模糊不清.这是我们大家(我们大多数人,大多数用户)对它的理解与其真实的含义有所偏差.HTML5不是一个用于我们创建网站的全新平台,不是一个富多媒体环境,也不是一个可以跨多设备运行网站的工具.总体来说,HTML5是一种尝试,不断制作网站以满足我们当前使用方式的需求,它由最早的简单文本链接网络转变而来. 大多数人认为,HTML5是一系列相关关联并相互补充的技术的集合,这些技术包括CSS3.SVG.JavaScript API等.尽管一些