¿Hay alguna diferencia entre: $(document)
y $("document")
?
EDITAR: también cuando en el .ready()
p. $("document").ready()
¿Hay alguna diferencia entre: $(document)
y $("document")
?
EDITAR: también cuando en el .ready()
p. $("document").ready()
$(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.
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>
.
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
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)
.
¿Por qué se ignora? – BoltClock
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 (...)'? –
@ Greg, Bolt: Actualicé. Había impuesto otro pensamiento en la pregunta prematuramente. – user113716
Muy buena respuesta a la pregunta * real *. +1 – user113716
Entonces, ¿cuál es la diferencia entre $ ("html") y $ (documento)? – Andrew
@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