2011-01-24 7 views
10

¿Hay alguna diferencia entre: $(document) y $("document")?

EDITAR: también cuando en el .ready() p. $("document").ready()

Respuesta

19

$(document) utiliza jQuery para envolver el objeto global document.

$("document") intentos para buscar un elemento <document>, lo que obviamente no tiene sentido en HTML, porque no hay tal elemento, solamente un objeto raíz document representado en el marcado por el elemento <html>. Se comporta de esa manera porque al pasar la función jQuery una cadena, en realidad le está dando un selector.

Re edición: patrick dw como dice, en el contexto de ready() no hay diferencia, y de hecho como de jQuery 3.0 utilizando $(document) en absoluto o una llamada explícita a ready() está en desuso. Desde documentation:

jQuery ofrece varias formas de adjuntar una función que se ejecutará cuando el DOM esté listo. Todas las sintaxis siguientes son equivalentes:

  • $(handler)
  • $(document).ready(handler)
  • $("document").ready(handler)
  • $("img").ready(handler)
  • $().ready(handler)

A partir de jQuery 3.0, sólo se recomienda la primera sintaxis; las otras sintaxis aún funcionan pero están en desuso. Esto se debe a que la selección no influye en el comportamiento del método .ready(), que es ineficiente y puede llevar a suposiciones incorrectas sobre el comportamiento del método. Por ejemplo, la tercera sintaxis funciona con "document" que no selecciona nada. La cuarta sintaxis espera a que el documento esté listo pero implica (incorrectamente) que espera a que las imágenes estén listas.

+2

Muy buena respuesta a la pregunta * real *. +1 – user113716

+0

Entonces, ¿cuál es la diferencia entre $ ("html") y $ (documento)? – Andrew

+0

@Andrew: html es el elemento raíz del documento (document.documentElement), no el objeto del documento. Si desea modificar el elemento html mismo (por ejemplo, agregando o eliminando nombres de clase), use $ ("html"), no $ (documento). – BoltClock

0

document es una variable global pre-hechos que es la representación del documento HTML actual, abreviatura de window.document.

$("document"), como @BoltClock señaló, usaría esa cadena como un selector para un elemento <document>.

1

Su primer ejemplo buscará una variable u objeto llamado documento dentro de su JS. (tenga cuidado, es una variable predefinida)

El segundo buscará en la página una etiqueta con el nombre "documento".

var document = 'div#logo'; 
$(document); //will search for div#logo 
$('document'); //will search for document 
7

Si estás hablando de llamar a la función .ready(), que (actualmente) no hace ninguna diferencia.

En ambos casos, se ignora el argumento.

usted puede hacer esto:

$("cheese pizza").ready(function() {}); 

Para que quede claro, lo mejor es utilizar las llamadas de apoyo oficial a .ready(), que son:

$(document).ready(function(){/*...*/}); 

y:

$(function(){/*...*/}); 

Cuando actúa ual seleccionando el document, debe usar $(document).

+0

¿Por qué se ignora? – BoltClock

+0

Seguramente existe una diferencia. ¿Estás diciendo que la llamada '.ready()' funciona en cualquier objeto jQuery? Si eso es cierto, ¿por qué no podría usar '$ .ready (...)'? –

+0

@ Greg, Bolt: Actualicé. Había impuesto otro pensamiento en la pregunta prematuramente. – user113716