使用data method時我可以將變量存儲在純javascript對象中有什麼好處嗎?在我看來,使用jQuery數據方法是性能降級,如果它意味着重新查找DOM元素來檢索鍵的值,如果DOM元素之前沒有被引用?爲什麼使用jQuery數據來存儲變量而不是普通的JavaScript對象?
對不起,如果這是痛苦的JavaScript開發人員顯而易見,但我希望能夠充分理解這一點。
使用data method時我可以將變量存儲在純javascript對象中有什麼好處嗎?在我看來,使用jQuery數據方法是性能降級,如果它意味着重新查找DOM元素來檢索鍵的值,如果DOM元素之前沒有被引用?爲什麼使用jQuery數據來存儲變量而不是普通的JavaScript對象?
對不起,如果這是痛苦的JavaScript開發人員顯而易見,但我希望能夠充分理解這一點。
這是一個簡單的方便的情況下,它取決於你的實現是否使用數據功能。當您想要爲特定的DOM元素存儲相關值時,通常會使用.data(),或者更可能是DOM元素的「集合」。您通常會在迭代元素並根據值執行決策或執行操作時檢索這些值。即使你要檢索一個值 - 如果你緩存了jQuery DOM元素,那麼檢索附加值將會是一種廉價的調用。
因爲您無法使用「純javascript對象」輕鬆存儲與某個DOM元素相關的數據。如果您的數據與某個DOM對象無關,您當然不應該使用$.data
!
對不起,如果我沒有意義..但沒有任何關係隱含只是因爲他們坐在DOM?如果是這樣,我不能將該(隱含)關係應用於對象數組嗎? – bcm 2011-03-15 09:03:37
爲什麼要將與某些DOM元素相關的數據存儲到DOM元素本身?而不是作爲一個可以更快地檢索的全局變量? – bcm 2011-03-15 09:16:42
1)全局變量很髒。 2)您需要檢索特定於DOM元素的數據。對於沒有ID的元素,你會怎麼做? – ThiefMaster 2011-03-15 10:18:19
我想通了。
的DOM元素可以和應參考當使用現有數據,並且將不可能在這樣擊中性能導致(我們仍維持DOM_Element-鍵值關係)。
因此,最初的樣子了爲「體」,當存儲鍵值是唯一的性能開銷,以及隨後的數據檢索沒有發現「身體」又:
b = $('body');
b.data('key', 'value');
alert(b.data('key'));
+1'收藏'兄弟的好處!我實際上碰到過,但並沒有跨過我的腦海...... – bcm 2011-03-15 09:49:45
此外,使用jQuery的data()將觸發該對象上的事件(「getData」)(早期版本的jQuery.datalink依賴於它們,但現在使用不同的方法)。一個例子可以在這裏看到:http://jsfiddle.net/algor/z2B8b/1/ – 2011-03-15 09:54:33