jQuery的data()方法 – WEB前端開發(fā)
在此之前,歡迎先閱讀HTML 5 的data-* 自定義屬性。
如果你使用jQuery類庫,那么你可以非常愉悅的使用jquery的data()方法存取data-*
自定義屬性,方法允許我們在DOM元素上綁定任意類型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險(xiǎn)。主要的方法如下:
- .data( key, value )
- .data( obj )
- .data( key )
- .data()
從jQuery 1.4.3起,?HTML 5 data- 屬性?將自動被引用到j(luò)Query的數(shù)據(jù)對象中。
例如HTML:
1 |
<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div> |
下面的 jQuery代碼都是返回 true 的:
1 2 3 4 |
$("div").data("role") === "page"; $("div").data("lastValue") === 43; $("div").data("hidden") === true; $("div").data("options").name === "John"; |
和html5的api不同的是,jQuery會嘗試將字符串轉(zhuǎn)換為一個(gè)JavaScript值(包括布爾值(booleans),數(shù)字(numbers),對象(objects),數(shù)組(arrays)和空(null))。如果這樣做不會改變數(shù)值的表示,那么該值將轉(zhuǎn)換為一個(gè)數(shù)字(number)。例如,“1E02”和“100.000”是等同于數(shù)字(數(shù)字值100),但將轉(zhuǎn)換它們會改變他們的表示,所以他們被保留為字符串。字符串值“100”被轉(zhuǎn)換為數(shù)字100。
如果數(shù)據(jù)(data)屬性是一個(gè)對象(以“{”開始)或數(shù)組(以’[‘開始),可以用jQuery.parseJSON
?將其解析成字符串;它必須遵循有效的JSON的語法,包括帶雙引號的屬性名稱。如果該值不能解析為一個(gè)JavaScript值,它將被保留為字符串。
如果不想將取出的屬性值直接當(dāng)作字符串的話,請使用attr()
方法。
data-屬性是在第一次使用這個(gè)數(shù)據(jù)屬性后不再存取或改變(所有的數(shù)據(jù)值都在jQuery內(nèi)部存儲)。
調(diào)用?.data()
?時(shí)如果不帶參數(shù),將會以 JavaScript 對象的形式獲取所有數(shù)據(jù)。這個(gè)對象可以安全的存放在變量中,因?yàn)橐坏┻@個(gè)新對象被提取出來,之后對元素進(jìn)行的?.data(obj)
操作,將不會再影響這個(gè)對象。另外,直接操作這個(gè)對象會比每次調(diào)用?.data()
?來設(shè)置或獲取值要快一些。
更多參閱:
http://www.css88.com/jqapi-1.9/data/
聲明: 本文采用 BY-NC-SA 協(xié)議進(jìn)行授權(quán) | WEB前端開發(fā)
轉(zhuǎn)載請注明轉(zhuǎn)自《jQuery的data()方法》