最簡單的方法是隻使用自己的屬性的DOM對象:
var element = document.getElementById("test");
element.myData = "whatever";
這裏的背後jQuery的.data()
功能是如何工作的,你可以在自己的純JavaScript中使用的總體思路。它在對象上使用一個自定義屬性,然後將其他所有內容存儲在由該自定義屬性的值索引的數據結構中。
var idCntr = 0; // global cntr
var data = {};
var element = document.getElementById("test");
var id = element.uniqueID;
if (!id) {
id = idCntr++ + "";
element.uniqueID = id;
}
data[id] = "whatever";
// then some time later, you can do this
var element = document.getElementById("test");
console.log(data[element.uniqueID]); // whatever
這是一個有點更多地參與到存儲多個屬性在數據對象給定對象,但這是一般的想法。
而且,如果你可以使用jQuery,這是微不足道的:
$("#test").data("myData", "whatever"); // sets the data
console.log($("#test").data("myData")); // retrieves the data
如果你想真正看到jQuery的.data()
作品中,您可以通過第一次調用步驟來設置數據,然後使用時檢索未定義的jQuery。很容易看到它的作用。
你想達到什麼目的?從DOM節點到您自己的數據結構的快速查找?如果是這樣,您可以隨時將自定義屬性附加到節點對象。 –
@AtesGoral,你是正確的,這是我想要實現的。我沒有意識到屬性和屬性之間的差異。在給定節點上編輯屬性是否會在該節點的整個生命週期中保持不變(就像它在文檔中一樣)? –
我不是100%確定的,但是特定DOM節點的屬性應該在該節點的生命週期中持續存在。我不知道在某些瀏覽器上是否有特殊情況導致將新的JS對象分配給現有的DOM節點... –