从jQuery对象派生HTMLElement对象

我正在做一个相当详尽的DOM操作系列,其中一些元素(特别是表单元素)有一些事件。

我正在动态创建(实际上是从源元素克隆)几个框并为它们分配一个change()事件。

更改事件执行,并且在事件的上下文中,“this”是HTML元素对象。

但是,此时我需要做的是确定此HTML元素对象的上下文。 我已将这些对象存储为各种数组中的jQuery实体,但很明显

[HTMLElement Object] != [Object Object]

而诀窍在于我无法转换$(this)并进行有效的比较,因为这会创建一个新对象并且指针会有所不同。

所以……我一直在反对这个问题。 在过去,我已经能够通过进行innerHTML比较来规避这个问题,但在这种情况下,我所比较的对象是100%相同的,只是有很多它们。 因此,我需要一个可靠的比较。

如果我能以某种方式从我的原始jQuery对象派生HTMLElement对象,这将很容易。

思想,其他想法? 救命。 🙁

你不能只使用$(this).data("something")来保存元素上的数据,然后再检查这些值吗? (假设你不能仅仅将这些东西称为“id”值。)

哦,jQuery本身也有一个你可以使用的“guid”元素(小心!)

 $(myNewObject).data("identity", $.quid++); 

如果我能以某种方式从我的原始jQuery对象派生HTMLElement对象,这将很容易

你不仅仅意味着$("#object")[0]$("#object").get(0) with“derive”你呢?

如果你维护一个包含你创建/克隆的元素的jQuery对象(我们称之为“jqClonedElements”),你可以将该集合减少为与$()匹配的单个元素。filter(元素) :

 var jqThis = jqClonedElements.filter(this); 

在此之后,您可能需要确认找到了您的元素,如下所示:

 var elementWasFound = (jqThis.length > 0); 

这应该就是它的全部!

-Matt