關(guān)于HTML5的data-*自定義屬性的總結(jié)
本文講述了關(guān)于HTML5的data-*自定義屬性。分享給大家供大家參考,具體如下:
一、關(guān)于html元素的特性
1.html元素都存在一些標(biāo)準(zhǔn)的特性:
id 元素在文檔中的唯一標(biāo)識(shí)符;
title 有關(guān)元素的附加說明信息,一般通過工具提示條顯示出來(lái);
lang 元素內(nèi)容的語(yǔ)言代碼,很少使用;
dir 語(yǔ)言的方向,很少使用;
className,與元素的class特性對(duì)應(yīng),考慮到與ECMAScript的保留字class的沖突,因此命名為className;
2.操作特性的方法:
getAttribute() 獲取相關(guān)特性,也可以獲取到自定義的特性,區(qū)別于使用DOM元素的屬性獲?。?nbsp;
setAttribute() 設(shè)置相關(guān)特性;
removeAttribute() 刪除相關(guān)特性;
3.關(guān)于獲取html元素特性中使用getAttribute()與直接使用DOM元素的屬性獲取的區(qū)別 :
例如:
var header=document.getElementById('header'); console.log(header.id);//header console.log(header.getAttribute('id'));//header console.log(header.title);//test console.log(header.getAttribute('title'));//test console.log(header.myTitle);//undefined console.log(header.getAttribute('myTitle'));//monster1935
在本文示例中演示了通過兩種方法獲取html元素的標(biāo)準(zhǔn)特性以及自定義特性??梢园l(fā)現(xiàn):
getAttribute()既可以訪問標(biāo)準(zhǔn)特性也可以訪問自定義特性,而是用DOM元素本身屬性訪問html元素特性的時(shí)候只能訪問標(biāo)準(zhǔn)特性。
原因:
html元素中只有標(biāo)準(zhǔn)特性才會(huì)以屬性的形式添加到DOM對(duì)象中。
特殊情況:
有兩類特性,雖有在DOM對(duì)象中有對(duì)應(yīng)的屬性名,但是屬性的值與通過getAttribute()返回的值并不相同。
1.style特性:
使用DOM對(duì)象屬性訪問style的時(shí)候,返回的是一個(gè)對(duì)象,而使用getAttribute()方法獲取的時(shí)候返回的是css文本。
2.事件處理程序(例如:onclick):
使用DOM對(duì)象的屬性訪問的時(shí)候,返回的是一個(gè)JavaScript函數(shù),而通過getAttribute()方法獲取時(shí)返回的是javas代碼。
使用方法:
只有在獲取自定義特性的時(shí)候使用getAttribute()方法,操作DOM的時(shí)候,使用對(duì)象的屬性來(lái)獲取。
二、Html5中的自定義屬性
1.Html5規(guī)范中規(guī)定自定義屬性需要添加前綴data-,目的是提供與渲染無(wú)關(guān)的信息。
2.使用getAttribute()方法以及setAttribute()方法操作自定義屬性。
例如:
var user=document.getElementById('user'); //使用attributes方法操作屬性 //獲取相關(guān)屬性值 var name=user.getAttribute('data-name'); console.log(name)//monster1935 var age = user.getAttribute('data-age'); console.log(age);//123 //設(shè)置相關(guān)屬性值 user.setAttribute('data-sex','male'); console.log(user.getAttribute('data-sex'));//male
上述示例中展示了使用getAttribute()以及setAttribute()方法操作html元素的自定義屬性。
3.使用dataset操作自定義屬性
例如:
var el=document.querySelector('#user'); console.log(el.id); console.log(el.dataset); //返回的是一個(gè)DomStringMap對(duì)象 console.log(el.dataset.name); console.log(el.dataset.age); // 設(shè)置相關(guān)屬性 el.dataset.home="shandong"; console.log(el.dataset); // 刪除相關(guān)屬性 // delete el.dataset.home; el.dataset.home = null; console.log(el.dataset);
以上示例展示了使用dataset屬性來(lái)操作自定義屬性。dataset屬性的值是一個(gè)DOMStringMap的一個(gè)示例,是一個(gè)名值對(duì)的映射。在這個(gè)映射中,每個(gè)data-name的形式的屬性都有一個(gè)對(duì)應(yīng)的屬性,不同的是屬性名中沒有data-前綴。(比如,自定義屬性是data-name,映射中對(duì)應(yīng)的屬性就是name).還有一點(diǎn)需要注意的是如果data-屬性名中包含了連字符(比如:data-date-of-birth),則映射中對(duì)應(yīng)的屬性為dateOfBirth,即轉(zhuǎn)換為相應(yīng)的駝峰格式來(lái)顯示。
4.dataset屬性的兼容性問題
Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+
5.使用data-屬性選擇器
1.獲取相關(guān)DOM元素
var elem=document.querySelectorAll("[data-name='monster1935']");
2.設(shè)置相關(guān)css樣式
<style> div{ width:100px; height:200px; margin:20px; } div[data-name="monster"]{ background-color: green; } div[data-name="monster1935"]{ background-color: red } </style>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Jquery+Ajax+PHP+MySQL實(shí)現(xiàn)分類列表管理(下)
本文將采用Jquery+Ajax+PHP+MySQL來(lái)實(shí)現(xiàn)一個(gè)客戶分類列表的管理,如何利用Ajax和Json技術(shù)讓用戶操作起來(lái)覺得更輕松,感興趣的小伙伴們可以參考一下2015-10-10模擬jQuery中的ready方法及實(shí)現(xiàn)按需加載css,js實(shí)例代碼
這篇文章介紹了模擬jQuery中的ready方法及實(shí)現(xiàn)按需加載css,js實(shí)例代碼,有需要的朋友可以參考一下2013-09-09jQuery實(shí)現(xiàn)鼠標(biāo)劃過添加和刪除class的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)鼠標(biāo)劃過添加和刪除class的方法,涉及jQuery鼠標(biāo)事件及頁(yè)面樣式的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06jQuery實(shí)現(xiàn)動(dòng)畫、消失、顯現(xiàn)、漸出、漸入效果示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)畫、消失、顯現(xiàn)、漸出、漸入效果,結(jié)合實(shí)例形式分析了jQuery中animate()、hide()、show()、slideUp()、slideDown()、slideToggle()、fadeOut()、fadeIn()等方法簡(jiǎn)單使用技巧,需要的朋友可以參考下2018-09-09jQuery EasyUI API 中文文檔 - Panel面板
jQuery EasyUI API 中文文檔 - Panel面板,使用jQuery EasyUI的朋友可以參考下。2011-09-09關(guān)于jQuery對(duì)象數(shù)據(jù)緩存Cache原理以及jQuery.data詳解
網(wǎng)上有很多教你怎么使用jQuery.data(..)來(lái)實(shí)現(xiàn)數(shù)據(jù)緩存,但有兩個(gè)用戶經(jīng)常使用的data([key],[value])和jQuery.data(element,[key],[value])幾乎沒有什么文章說清楚它們兩的區(qū)別,所以我用到了,研究下分享給大家。2013-04-04formvalidator驗(yàn)證插件中有關(guān)ajax驗(yàn)證問題
jquery formvalidator插件是不錯(cuò)的國(guó)產(chǎn)驗(yàn)證插件了,做點(diǎn)普通的校驗(yàn)也是很方便的,但最近遇到個(gè)問題,發(fā)現(xiàn)如果表單整個(gè)表單是AJAX提交時(shí),就不能按傳統(tǒng)的做法了2013-01-01asp.net網(wǎng)站開發(fā)中用jquery實(shí)現(xiàn)滾動(dòng)瀏覽器滾動(dòng)條加載數(shù)據(jù)(類似于騰訊微博)
騰訊微博提供兩種加載數(shù)據(jù)的方式,一種是分頁(yè),一種是滾動(dòng)瀏覽器滾動(dòng)條加載數(shù)據(jù),分頁(yè)功能我想大家都做得太多了,今天我與大家分享一下我用滾動(dòng)條滾動(dòng)加載數(shù)據(jù)2012-03-03