日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

HTML data属性简介以及低版本浏览器兼容算法

發布時間:2024/6/18 HTML 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML data属性简介以及低版本浏览器兼容算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例

使用 data-* 屬性來嵌入自定義數據:

<ul> <li data-animal-type="bird">Owl</li> <li data-animal-type="fish">Salmon</li> <li data-animal-type="spider">Tarantula</li> </ul>

瀏覽器支持

IE Firefox Chrome Safari Opera
? ? ?支持 ? ? ?支持 ? ? ?支持 ? ? ?支持 ? ? ?支持

所有主流瀏覽器都支持 data-* 屬性。

定義和用法

data-* 屬性用于存儲頁面或應用程序的私有自定義數據。

data-* 屬性賦予我們在所有 HTML 元素上嵌入自定義 data 屬性的能力。

存儲的(自定義)數據能夠被頁面的 JavaScript 中利用,以創建更好的用戶體驗(不進行 Ajax 調用或服務器端數據庫查詢)。

data-* 屬性包括兩部分:

  • 屬性名不應該包含任何大寫字母,并且在前綴 "data-" 之后必須有至少一個字符
  • 屬性值可以是任意字符串

注釋:用戶代理會完全忽略前綴為 "data-" 的自定義屬性。

語法

<element data-*="somevalue">

屬性值

值 描述
somevalue 規定屬性的值(以字符串)。

HTML adta-*屬性

==============【以上來自W3School】===================

【外加信息】

HTML標簽可以添加自定義屬性來存儲和操作數據。但這樣做會導致html語法上不符合Html規范。HTML5規范里增加了一個自定義data屬性,自定義data屬性的用法非常的簡單,就可以往HTML標簽上添加任意以 "data-"開頭的屬性,這些屬性頁面上是不顯示的,它不會影響到你的頁面布局和風格,但它卻是可讀可寫的。?

下面的一個代碼片段是一個有效的HTML5標記:?

<div id="item" data-id='123'>11111</div>

可是,怎么來讀取這些數據呢?你當然可以遍歷頁面元素來讀取你想要的屬性,但jquery已經內置了方法來操作這些屬性。使用jQuery的.data()方法來訪問這些"data-*" 屬性。其中一個方法就是 .data(obj),這個方法是在 jQuery1.4.3版本后出現的,它能返回相應的data屬性。

?舉個例子,你可以用下面的寫法讀取 data-id屬性值--123:?

var myid= jQuery("#item").data('id');

你還可以在"data-*" 屬性里使用json語法,

<div id="item" data-id='{"game":"on"}'></div>你可以通過js直接訪問這個數據,通過json的key值,你能得到相應的value:?
var gameStatus= jQuery("#item").data('id').game;你也可以通過.data(key,value)方法直接給"data-*" 屬性賦值。一個重要的你要注意的事情是,這些"data-*" 屬性應該和它所在的元素有一定的關聯,不要把它當成存放任意東西的存儲工具。盡管"data-*" 是HTML5才出現的屬性,但jquery是通用的,所以,在非HTML5的頁面或瀏覽器里,你仍然可以使用.data(obj)方法來操作"data-*" 數據。

================

==============【data屬性低版本兼容】==================

【DEMO】

【效果】

<!DOCTYPE html> <html> <head><meta charset="UTF-8"><title>dataset</title><style>li{cursor: default;line-height: 1.8;}table{border-collapse: collapse;}th, td, caption{padding: 10px;border: 1px solid #ddd;font-size: 14px;}th{color: #999;}caption{font-size: 20px;font-weight: bold;border-bottom: none;}#card{position: absolute;top: 10px;left: 150px;}</style> </head> <body><ul><li data-id="123456" data-account-name="張威"data-name="張威" data-email="17777777777@163.com" data-mobile="17777777777">張威</li><li data-id="123457" data-account-name="JokerWill"data-name="JokerWill" data-email="13333333333@163.com" data-mobile="13333333333">JokerWill</li></ul><div id="card" style="display:none"><table><caption id="accountName"></caption><tr><th>姓名:</th><td id="name"></td></tr><tr><th>郵箱:</th><td id="email"></td></tr><tr><th>手機:</th><td id="mobile"></td></tr></table></div><script>function $(id){return document.getElementById(id);}var lis = document.getElementsByTagName('li');for(var i = 0, li;li = lis[i]; i++){li.onmouseenter = function(event){event = event || window.event;var user = event.target|| event.srcElement;//var data = user.dataset;var data=get_dataset(user);$('accountName').innerText = data.accountName;$('name').innerText = data.name;$('email').innerText = data.email;$('mobile').innerText = data.mobile;$('card').style.display = 'block';};li.onmouseleave = function(event){$('card').style.display = 'none';};}//帶兼容的函數function get_dataset(ele){if(ele.dataset)return ele.dataset;else{//一下是兼容代碼var dataset = {};var ele_split = ele.outerHTML.split(" ");for(var i = 0,element; i < ele_split.length; i++) {element = ele_split[i];if (element.substring(0,4) == "data") { if (element.indexOf(">") != -1) { element = element.split(">")[0];};ele_key=element.split("=")[0].slice(5);ele_value=element.split("=")[1].slice(1,-1);if(ele_key.indexOf("-") == -1){dataset[ele_key] = ele_value;}else{ele_keys=ele_key.split("-");ele_key=ele_keys[0];for(i=1;i<ele_keys.length;i++){ele_key+=replaceReg(ele_keys[i]);} }};}return dataset;}}//正則表達式變換首字母大寫function replaceReg(str){ var reg = /\b(\w)|\s(\w)/g; str = str.toLowerCase(); return str.replace(reg,function(m){return m.toUpperCase()}) }</script> </body> </html>
【關鍵代碼】

//帶兼容的函數 function get_dataset(ele){if(ele.dataset)return ele.dataset;else{//一下是兼容代碼var dataset = {};var ele_split = ele.outerHTML.split(" ");for(var i = 0,element; i < ele_split.length; i++) {element = ele_split[i];if (element.substring(0,4) == "data") { if (element.indexOf(">") != -1) { element = element.split(">")[0];};ele_key=element.split("=")[0].slice(5);ele_value=element.split("=")[1].slice(1,-1);if(ele_key.indexOf("-") == -1){dataset[ele_key] = ele_value;}else{ele_keys=ele_key.split("-");ele_key=ele_keys[0];for(i=1;i<ele_keys.length;i++){ele_key+=replaceReg(ele_keys[i]);} }};}return dataset;}}

轉載于:https://www.cnblogs.com/zwwill/p/7391398.html

總結

以上是生活随笔為你收集整理的HTML data属性简介以及低版本浏览器兼容算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。