JavaScript:“文档”和“HTML”之间的区别是什么

时间:2011-01-18 06:16:02

标签: javascript jquery

示例:

$(document).click(function() { blah });   
// and
$('html').click(function() { blah });

4 个答案:

答案 0 :(得分:12)

我将在几个部分回答这个问题。

在JavaScript(不仅仅是jQuery,而是所有JavaScript)中,document关键字是包含HTMLDocument的对象的句柄。您可以在以下方案中使用此句柄...

// Get the current web address
alert(document.location.href);

当您将文档传递给jQuery时,它会将文档解析为jQuery对象。

当你将“html”选择器传递给jQuery时,它使用这个字符串来查找文档对象模型中与选择器匹配的任何元素(在所有情况下,都会有一个html元素)。

实际上,您不会注意到这些行为之间的差异:

$(document).click(function() { alert('blah'); });   
$('html').click(function() { alert('blah'); });
$('body').click(function() { alert('blah'); });

但技术上的差异是文档是一个对象,'html'是一个用于搜索元素的字符串。对象和任何匹配元素都转换为jQuery对象。

因为他们都将点击事件处理程序添加到页面的“可见”部分,这是用户可以实际点击的页面的唯一部分。

答案 1 :(得分:1)

尝试推出两者的innerHTML,结果是什么?我认为(但没有测试)那个

  • document确实是完整的文档,包括<html>及其中的所有元素
  • html引用了<html> - 代码,因此输出中只有<head><body>,而不是<html> - 代码本身< / LI>

但是:对于您的代码(添加点击处理程序),没有任何区别,因为点击文档始终只需点击<html>(只要您的网站有效且 <html> - 代码

答案 2 :(得分:1)

他们选择相同的东西。唯一的区别是jQuery的sizzle引擎如何找到它。第一种情况是jQuery init函数中的特例,第二种情况是使用getElementsByTagName

答案 3 :(得分:0)

我注意到的一些区别是:

  1. documentDOM Element which wraps the HTML - DOM ElementhtmlHTML DOM element
  2. document包括 文档的第一行-指定doctype的那一行。对于前。 <!doctype html> (for HTML 5)
  3. HTML可以具有class, id and other attributes,而document不具有(也不能具有)这些attributes。尝试$(document).addClass('test') v/s $('html').addClass('test');,注意elements tab on developer console上的区别。

祝你好运...