jQuery对象是否是实际的DOM对象?向它们添加属性是否正确?

时间:2013-11-15 18:10:45

标签: javascript jquery dom

通过this question我发现here扩展DOM对象存在缺点。 可以做以下的事情吗?

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

我知道jQuery上有一个.data()方法,但上面的内容似乎更容易使用。我也想知道我的tr变量是否包含实际的tr DOM元素或任何其他类型的对象。

2 个答案:

答案 0 :(得分:3)

凯文不对。您可以通过执行以下操作在大多数浏览器中将某些内容存储在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';

答案 1 :(得分:2)

jQuery处理名为jQuery object的特殊数组中的DOM对象。您可以将其视为DOM元素的数组,这些元素已扩展为包含所有jQuery方法。

您可以像下面这样访问示例中的DOM元素:

tr[0]

但所有不以这种方式存储数据的理由仍然适用。

正如@Kevin B所提到的,做你正在尝试做的事情(扩展jQuery对象)是不行的,因为你将在每次重新初始化时丢失自定义属性。