Ejemplo:JavaScript: ¿Cuál es la diferencia entre 'documento' y 'HTML'
$(document).click(function() { blah });
// and
$('html').click(function() { blah });
Ejemplo:JavaScript: ¿Cuál es la diferencia entre 'documento' y 'HTML'
$(document).click(function() { blah });
// and
$('html').click(function() { blah });
Voy a responder a la pregunta en varias partes.
En JavaScript (no solo jQuery, sino todo el JavaScript), la palabra clave del documento es un identificador del objeto que contiene HTMLDocument. Es posible utilizar esta manija en los siguientes escenarios ...
// Get the current web address
alert(document.location.href);
Cuando se pasa el documento a jQuery, se analiza el documento en un objeto jQuery.
Cuando pasa el selector "html" a jQuery, utiliza esta cadena para buscar cualquier elemento en el modelo de objetos del documento que coincida con el selector (en todos los casos, habrá un elemento html).
En realidad, no se observa una diferencia de comportamiento entre ellos:
$(document).click(function() { alert('blah'); });
$('html').click(function() { alert('blah'); });
$('body').click(function() { alert('blah'); });
Pero la diferencia técnica es que el documento es un objeto y 'html' es una cadena que se utiliza para buscar una elemento. Tanto el objeto como los elementos coincidentes se convierten en objetos jQuery.
Como todos añaden un controlador de evento de clic a la parte "visible" de la página, que es la única parte de la página en la que un usuario puede hacer clic de forma realista.
intento de apagar el innerHtml tanto, cuál es el resultado? yo Opino (pero han't probado) que
document
es realmente el documento completo, incluyendo <html>
y todos los elementos que lo integranhtml
referencias al <html>
-tag, por lo que sólo habrá la <head>
y en <body>
su salida, no el <html>
-Tag sípero: su código (la adición de un clic-controlador) no habría ninguna diferencia, porque al hacer clic en el documento siempre será un clic en el <html>
(siempre y cuando su sitio sea válido y tiene un <html>
-tag)
Seleccionan lo mismo. La única diferencia es cómo lo encuentra el motor sizzle de jQuery. El primer caso es un caso especial en la función jQuery init, el segundo usando el getElementsByTagName
en el scneraio anterior ... creo que ambos son iguales. – kobe