3
在jQuery中,.data
讀取HTML5 data-*
屬性的值,但是當你設置與data
功能/更新的值,它不會改變屬性。
<div id="first" data-foo="attr value" > </div>
var attr = $('#first').data('foo');
alert(attr); // alerts: attr value
$('#first').data('foo', 'data value');
var data = $('#first').data('foo');
alert(data); //alerts: data value
var attrAgain = $('#first').attr('data-foo');
alert(attrAgain); // alerts: attr value
哪裏jQuery的存儲值是多少?在這篇文檔中它是這樣寫的:
數據屬性在第一次訪問數據屬性時被拉出來,然後不再被訪問或變異(所有的數據值被內部存儲在jQuery中)。
但是在哪裏?我試圖瞭解使用.data
函數是多麼昂貴。
如何在沒有.data
函數的情況下達到這些值?
'data'讀取'data- *'屬性只是一個附加功能。早在那之前它就被用來爲任意數據分配元素。 – 2012-03-04 12:27:14
*「我試圖理解使用.data函數是多麼昂貴。」*肯定比獲取/設置屬性更昂貴。它需要讀取元素的序列號,然後查找存儲在'jQuery.cache'中的序列號的數據。如果您需要在相同的立即代碼中重複訪問,可以通過執行'var d = $(myElem).data()'來直接引用關聯的數據,然後像對待正常一樣讀取/寫入對象的屬性。此外,使用['$ .data(myElem)'](http://api.jquery.com/jquery.data/)更快一些,因爲它不會創建jQuery對象。 – 2012-03-04 13:48:10