JS自定義data-*屬性與jquery的data()方法的使用

人們總喜歡往HTML標籤上添加自定義屬性來存儲和操做數據。但這樣作的問題是,你不知道未來會不會有其它腳本把你的自定義屬性給重置掉,此外,你這樣作也會致使html語法上不符合Html規範,以及一些其它反作用。這就是爲何在HTML5規範裏增長了一個自定義data屬性,你能夠拿它作不少有用的事情。 你能夠去讀一下HTML5的詳細規範,但這個自定義data屬性的用法很是的簡單,就是你能夠往HTML標籤上添加任意以 "data-"開頭的屬性,這些屬性頁面上是不顯示的,它不會影響到你的頁面佈局和風格,但它倒是可讀可寫的。 下面的一個代碼片斷是一個有效的HTML5標記:  html

複製代碼 jquery

代碼以下: json

<div id="awesome" data-myid="3e4ae6c4e">Some awesome data</div>  瀏覽器

但是,怎麼來讀取這些數據呢?你固然能夠遍歷頁面元素來讀取你想要的屬性,但jquery已經內置了方法來操做這些屬性。使用jQuery的.data()方法來訪問這些"data-*" 屬性。其中一個方法就是 .data(obj),這個方法是在 jQuery1.4.3版本後出現的,它能返回相應的data屬性。 舉個例子,你能夠用下面的寫法讀取 data-myid屬性值:  工具

複製代碼 佈局

代碼以下: htm

var myid= jQuery("#awesome").data('myid'); console.log(myid);  頁面佈局

你還能夠在"data-*" 屬性裏使用json語法,例如,若是你寫出下面的html:  console

複製代碼 遍歷

代碼以下:

<div id="awesome-json" data-awesome='{"game":"on"}'></div> 

你能夠經過js直接訪問這個數據,經過json的key值,你能獲得相應的value: 

複製代碼

代碼以下:

var gameStatus= jQuery("#awesome-json").data('awesome').game; console.log(gameStatus); 

你也能夠經過.data(key,value)方法直接給"data-*" 屬性賦值。一個重要的你要注意的事情是,這些"data-*" 屬性應該和它所在的元素有必定的關聯,不要把它當成存聽任意東西的存儲工具。 譯者補充:儘管"data-*" 是HTML5纔出現的屬性,但jquery是通用的,因此,在非HTML5的頁面或瀏覽器裏,你仍然可使用.data(obj)方法來操做"data-*" 數據。

相關文章
相關標籤/搜索