2011-11-17 7 views
7

Así que por lo que yo puedo decir, si tengoUso .get (0) o .html() para devolver HTML con jQuery

<div id="thing">OMG there's awesome stuff in here</div> 

y la necesidad de plantar que HTML en otro lugar, tengo la opción de usar:
$('#thing').html(); o $('#thing').get(0);

¿hay un mayor estándar de Internet en el uso de uno u otro? Hacen exactamente lo mismo, ¿verdad?

¡Gracias por la ayuda!

+0

Solo para aclarar, está tratando de eliminar ese elemento de su nodo padre, y luego lo agrega a otro lugar en el árbol DOM, ¿correcto? – abelito

+0

'.html()' serializa una estructura DOM, 'get (0)' recupera una referencia DOM. Como puede ver, esos dos hacen cosas completamente diferentes. Por cierto [se debe evitar la serialización DOM] (http://stackoverflow.com/questions/7392930/why-should-y-innerhtml-x-innerhtml-be-avoided). –

Respuesta

7

.get(0) le dará el primer elemento en el objeto jquery, no el HTML dentro de eso. Entonces necesitarías obtener el html. Si está usando jquery, use jquery. No veo ninguna razón para no usar .html().

+1

Soy un idiota, .html() obtiene el innerHTML, .get (0) obtiene el elemento html en su totalidad. – OldDrunkenSailor

+0

@JamesMontagne dijiste: "Si usas jquery, usa jquery. No veo ninguna razón para no usar' .html() '". Pero '.html() _is_ jQuery definitivamente tiene sus usos. Realmente no sabemos qué quiere el OP aquí. – JAAulde

+0

@jaa Sí, lo hice ... lo que quise decir es usar '.html', ¿por qué usar' get' y obtener el elemento dom. No estaba diciendo que no use '.html'. Después de volver a leer la pregunta, había tomado "algún html" para referirme al html real y no al elemento, pero podría haber sido un mal uso de los términos y podría querer mover el elemento dom, en cuyo caso probablemente ninguno debería ser usado. –

0

Solo he usado .html() y trabajo para una empresa. Nunca he visto .get (0) usado para algo como esto

14

Hacen exactamente lo mismo, ¿no?

Wrong. El método html devuelve el contenido del elemento seleccionado, como una cadena. El método get devuelve el elemento en sí, como un objeto. Por ejemplo, tenemos este elemento:

<div id="example"> 
    <span>A child element</span> 
</div> 

Los métodos volverían los siguientes:

console.log($("#example").html()); //Prints "<span>A child element</span>" 
console.log($("#example").get(0)); //Prints an object 

Usted puede tratar de que por sí mismo here.

0

Son bastante diferentes. El método get devuelve un elemento DOM mientras que html() devuelve una cadena. Aquí parece que desea que el HTML para utilizar html()

0

No, no hacen exactamente lo mismo.

.html() rendimientos cadena HTML que representa la estructura del DOM el interior del elemento que figura dentro del objeto de colección de jQuery: "OMG hay cosas increíbles aquí".

.get(0) devuelve el primer objeto DOM elemento de la colección, en este caso un nodo DOM de la etiqueta de tipo DIV con ID "cosa" y el niño de texto-nodo con valor "OMG hay cosas increíbles aquí"

2

Si desea duplicar algunos elementos, haga no use html. Es una forma muy ineficiente de elementos de clonación.Hay una manera mucho mejor, llamado clone (curiosamente):

$('#thing').clone(true).removeProp('id').appendTo('#someOtherElement'); 

Tenga en cuenta que estoy quitando la propiedad id, ya que debe ser único.

2

Estas dos cosas hacer cerca de lo mismo (tenga en cuenta la adición de .innerHTML a lo que tenía en su pregunta):

$('#thing').html(); 

$('#thing').get(0).innerHTML; 

El primero crea un objeto jQuery, a continuación, llama al método .html() en él (que a su vez obtiene el HTML de la propiedad .innerHTML).

El segundo crea un objeto jQuery, luego obtiene el primer elemento DOM y obtiene la propiedad innerHTML de él.

En general, si ya tiene un objeto jQuery, utilice .html(). Si ya tiene un objeto DOM, utilice .innerHTML.

Cuestiones relacionadas