w3schools obtener insertar ejemplos div contenido con codigo javascript jquery visual-studio-2013 intellisense javascript-intellisense

javascript - obtener - outerhtml jquery



¿Por qué no puedes llamar a outerHTML en $(esto)? (4)

Agregaré lo que encontré para ser la solución correcta a lo que terminó siendo un defecto simple en la configuración predeterminada de Visual Studio para referencia futura.

Como no quería dejarlo pasar, busqué más y descubrí que, de forma predeterminada, jQuery IntelliSense es algo deplorable en Visual Studio 2013.

Debajo

Herramientas> Opciones> Editor de texto> Javascript> IntelliSense> Referencias

lo puse

Grupo de referencia: "Implícito (web)"

y agregó un archivo jQuery existente. Esto resolvió todos los problemas de mi pregunta e IntelliSense ahora sugiere todos los miembros y métodos correctamente, aunque esto debería haber funcionado de la caja en lugar de costarles a todos un montón de tiempo.

Cuando desee obtener el código HTML de un elemento DOM completo (envoltorio incluido), puede hacer lo siguiente (como se explica aquí ):

$(''#myElementId'')[0].outerHTML

Pero lo que no puede hacer es llamar a outerHTML on $(this) dentro, por ejemplo, un detector de clics o un alcance del cuerpo de la función de selector:

$(this).outerHTML //Doesn''t complete in IntelliSense, returns undefined in browser

o

$(this)[0].outerHTML //Correction, this DOES work, but it doesn''t complete in IntelliSense

porque IntelliSense no mostrará innerHTML o outerHTML en esas circunstancias, aunque con JavaScript outerHTML puede hacer:

document.getElementById($(this).attr(''id'')).outerHTML

Entonces ... ¿qué pasa con eso?


El selector jQuery devuelve un objeto jQuery similar a un array que no tiene propiedad outerHTML.

Sin embargo, la matriz resultante jQuery contiene elementos DOM.
Significa que puedes acceder de esta manera.

$(".someClass")[0].outerHTML // it works for me

Actualización: Funciona para mí en todos los navegadores.
También puedo acceder al objeto jQuery tipo array en un controlador de evento click.

$(".someClass").click(function() { alert($(this)[0].outerHTML); // it works me too });

Aquí está mi JSFiddle: http://jsfiddle.net/13btf60p/

Actualización 2:

OK, ahora entiendo tu pregunta. Debería haber funcionado. ¿Realmente necesita un IntelliSense para completar una construcción tan simple y simple?


Puede usar this directamente para acceder a outerHTML del objeto actual en lugar de ir indirectamente a $(this) ya que representa el objeto DOM (que tiene propiedad outerHTML ) mientras que $(this) representa el objeto jQuery.

this.outerHTML


outerHTML es una propiedad DOM; jQuery no expone todas las propiedades DOM.

Si tiene un objeto jQuery, solo puede acceder directamente a esas propiedades y métodos que jQuery expone, y viceversa para los objetos DOM.

En términos orientados a objetos, los objetos jQuery no heredan de los objetos DOM, los contienen.

Al decir $x[0] obtiene el objeto DOM para el primer elemento representado por un objeto jQuery.