2013-11-15 38 views
0

通過this question我發現here在擴展DOM對象方面存在缺陷。 可以做類似以下的事情嗎?jQuery對象是否是實際的DOM對象?向他們添加屬性是否正確?

var tr = $('<tr>'); 
tr.myCustomProperty = 'Some string value'; 

我知道有jQuery的一個.data()方法,但上面似乎更容易使用。我也懷疑我的tr變量是否持有一個實際的DOM元素或任何其他類型的對象。

+3

不,他們是jQuery對象。當您重新選擇tr或使用生成新的jquery對象的方法時,屬性會丟失。 –

+0

不,實質上$('')是一個函數,其名稱是「$」,參數是''。這不是一個DOM對象 – aarryy

回答

2

的jQuery處理DOM中稱爲jQuery object特殊對象數組。你可以把它看作是擴展了所有jQuery方法的DOM元素的數組。

您可以訪問DOM元素在你的例子是這樣的:

tr[0] 

但所有的理由不存儲方式仍然適用的數據。

正如@Kevin B所提到的,做你正在做的事情(擴展jQuery對象)是不好的,因爲你在每次重新初始化時都會失去自定義屬性。

3

Kevin不正確。您可以通過以下操作存儲在TR在大多數瀏覽器的東西:

var tr = $('tr').eq(0); // get a single TR from the DOM 
var actualElement = tr[0]; // get the actual element object from the jQuery object 
actualElement.myCustomProperty = 'Some string value'; 
+4

凱文的陳述是正確的。 Diego將該屬性添加到jQuery對象。那就是 - 正如凱文寫的 - 一個壞主意。 –

+0

你的解決方法雖然是正確的。 –

相關問題