有没有一种将 JavaScript 对象附加到 HTML 元素的好方法?

我想把一个 JavaScript 对象和一个 HTML 元素关联起来。有没有一种简单的方法可以做到这一点?

我注意到 HTML DOM定义了一个 setAttribute 方法,看起来这是为任意属性名定义的。但是这只能设置字符串值。(当然,您可以使用它将密钥存储到字典中。)

细节 (尽管我最感兴趣的是这个一般性问题) :

具体来说,我有表示树中节点的 HTML 元素,并且我正在尝试启用拖放,但是 jQuery 拖放事件只会给我拖放的元素。

将信息传递给事件处理程序的常规模式似乎是在创建 JavaScript 对象的同时创建 HTML 元素,然后通过关闭这些 JavaScript 对象来定义事件处理程序——然而,在这种情况下,这种模式并不能很好地工作(我可以有一个在拖动开始时被填充的全局对象... ... 但这感觉有点讨厌)。

54558 次浏览

Have you looked at the jQuery data() method? You can assign complex objects to the element if you want or you can leverage that method to hold a reference to an object (or some other data) at the very least.

JavaScript objects can have arbitrary properties assigned to them, there's nothing special you have to do to allow it. This includes DOM elements; although this behaviour is not part of the DOM standard, it has been the case going back to the very first versions of JavaScript and is totally reliable.

var div= document.getElementById('nav');
div.potato= ['lemons', 3];