2010-03-30 23 views
5

Estoy realizando una serie bastante exhaustiva de manipulaciones DOM donde algunos elementos (específicamente elementos de forma) tienen algunos eventos.Obtención de un objeto HTMLElement del objeto jQuery

Estoy creando dinámicamente (en realidad clonando desde un elemento fuente) varias cajas <select> y asignándoles un evento change().

El evento change se ejecuta, y dentro del contexto del evento, "this" es el objeto HTML Element.

Lo que tengo que hacer en este momento, sin embargo, es determinar un contexto para este objeto de elemento HTML. Tengo ya almacenados como entidades jQuery en matrices variedad de estos objetos, pero obviamente

[HTMLElement Object] != [Object Object]

Y el truco es que no puedo emitir $ (este) y hacer una comparación válida, ya que crearía un nuevo objeto y la puntero sería diferente.

Entonces ... He estado golpeando mi cabeza contra esto por un tiempo. En el pasado, pude eludir este problema haciendo una comparación HTML interna, pero en este caso los objetos que estoy comparando son 100% idénticos, solo que hay muchos de ellos. Por lo tanto, necesito una comparación sólida.

Esto sería fácil si pudiera derivar de alguna manera el objeto HTMLElement de mi objeto jQuery de origen.

¿Pensamientos, otras ideas? Ayuda. :(

Respuesta

4

no puedes usar $(this).data("something") para mantener los datos en sus elementos y luego comprobar los valores más adelante? (Eso es suponiendo que no se acaba de dar a estas cosas ol llano' valores 'ID'.)

Oh también en sí jQuery tiene un elemento "GUID" que se puede utilizar (¡cuidado!)

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

Brilliant. No sabía que existía ... ¿dónde se almacena realmente el valor? El trato con los ID es que ya tienen ID en esta fase de desarrollo que aún no estoy listo para eliminar debido a problemas de compatibilidad con versiones anteriores. –

+0

Aceptando esto por ahora, pero siempre estoy abierto a más ideas. Pero data() parece ser el truco. –

+0

Oh, bueno, si los objetos tienen valores "id", ¿por qué no usarlos?Tenga en cuenta que debe asegurarse de que todos los valores "id" sean únicos de todos modos, o de lo contrario, cosas extrañas y misteriosas (generalmente malas) comenzarán a suceder. – Pointy

4

Esto sería fácil si de alguna manera pudiera derivar del objeto HTMLElement de mi originario jQuery objeto

no solo significa $("#object")[0] o $("#object").get(0) con 'deriva', ¿o sí?

+0

No. Seleccionar por ID tampoco es una opción. –

+1

Quiere decir que con su objeto jQuery ya cargado con un selector, ese $() [0] le dará los elementos encontrados con el selector dado. Ejemplo: $ (esto) [0] == esto devuelve verdadero, mientras que $ (esto) == esto devuelve falso. – Bob

+2

de hecho, $ ("#objeto") [0] devuelve el elemento HTML DOM nativo. – jAndy

0

Si mantiene un objeto jQuery que contiene los elementos que ha creado/clonado (vamos a llamarlo "jqClonedElements"), puede reducir ese conjunto al elemento único que coinciden con "este" con $().filter(element):

var jqThis = jqClonedElements.filter(this); 

Después de esto, es posible que desee confirmar que se ha encontrado su elemento, de la siguiente manera:

var elementWasFound = (jqThis.length > 0); 

eso debería ser todo lo que hay que hacer!

-Matt

Cuestiones relacionadas