Получение объекта HTMLElement из объекта jQuery - PullRequest
5 голосов
/ 30 марта 2010

Я делаю довольно исчерпывающую серию манипуляций с DOM, где несколько элементов (в частности, элементы формы) имеют некоторые события.

Я динамически создаю (фактически клонирую из исходного элемента) несколько <select> блоков и назначаю им событие change ().

Событие изменения выполняется, и в контексте события «this» является объектом HTML-элемента.

Однако в этот момент мне нужно определить контекст для этого объекта HTML-элемента. У меня эти объекты уже хранятся в виде объектов jQuery в разных массивах, но, очевидно,

[HTMLElement Object] != [Object Object]

И хитрость в том, что я не могу привести $ (this) и сделать правильное сравнение, так как это создаст новый объект, а указатель будет другим.

Итак ... Я бился головой об это некоторое время. В прошлом мне удавалось обойти эту проблему, сравнивая innerHTML, но в этом случае сравниваемые объекты на 100% идентичны, просто их много. Поэтому мне нужно твердое сравнение.

Это было бы легко, если бы я мог каким-то образом получить объект HTMLElement из своего исходного объекта jQuery.

Мысли, другие идеи? Помогите. (

Ответы [ 3 ]

4 голосов
/ 30 марта 2010

Это было бы легко, если бы я мог каким-то образом получить объект HTMLElement из моего исходного объекта jQuery

Вы не просто имеете в виду $("#object")[0] или $("#object").get(0) с "производным", не так ли?

4 голосов
/ 30 марта 2010

Разве вы не можете просто использовать $(this).data("something") для хранения данных ваших элементов, а затем проверить значения позже? (Предполагается, что вы не можете просто дать этим вещам простые значения "id".)

О, также в самом jQuery есть элемент guid, который вы можете использовать (будьте осторожны!)

$(myNewObject).data("identity", $.quid++);
0 голосов
/ 05 ноября 2014

Если вы поддерживаете объект jQuery, содержащий элементы, которые вы создали / клонировали (назовем его «jqClonedElements»), вы можете уменьшить этот набор до одного элемента, соответствующего «this» с $ (). Filter ( элемент)

var jqThis = jqClonedElements.filter(this);

После этого вы можете подтвердить, что ваш элемент был найден, следующим образом:

var elementWasFound = (jqThis.length > 0);

Это должно быть все, что нужно!

Матф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...