开发者

Deriving an HTMLElement Object from jQuery Object

I'm doing a fairly exhaustive series of DOM manipulations where a few elements (specifically form elements) have some events.

I am dynamically creating (actually cloning from a source element) several <select> boxes and assigning a change() event to them.

The change event executes, and within the context of the event, "this" is the HTML Element Object.

What I need to do at this point however is determine a context for this HTML Element Object. I have these objects stored already as jQuery entities in assorted arrays, but obviously

[HTMLElement Object] != [Object Object]

And the trick is that I cannot cast $(this) and make a valid comparison since that would create a new object and the pointer would be different.

So... I've been banging my开发者_如何转开发 head against this for a while. In the past I've been able to circumvent this problem by doing an innerHTML comparison, but in this case the objects I am comparing are 100% identical, just there's lots of them. Therefore I need a solid comparison.

This would be easy if I could somehow derive the HTMLElement object from my originating jQuery object.

Thoughts, other ideas? Help. :(


This would be easy if I could somehow derive the HTMLElement object from my originating jQuery object

you don't just mean $("#object")[0] or $("#object").get(0) with 'derive' do you?


Can't you just use $(this).data("something") to keep data on your elements and then check the values later? (That's assuming you can't just give these things plain ol' "id" values.)

Oh also jQuery itself has a "guid" element that you can use (be careful!)

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


If you maintain a jQuery object containing the elements you've created/cloned (let's call it "jqClonedElements"), you can reduce that set to the single element matching "this" with $().filter(element):

var jqThis = jqClonedElements.filter(this);

After this, you may want to confirm that your element was found, as follows:

var elementWasFound = (jqThis.length > 0);

That should be all there is to it!

-Matt

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜