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

例:

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

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

在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对象。

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

尝试推出两者的innerHTML,结果如何? 我估计(但没有测试)

  • document实际上是完整的文档,包括及其中的所有元素
  • html引用 -tag,因此输出中只有 ,而不是 -tag本身

但是:对于你的代码(添加一个点击处理程序)没有区别,因为点击文档将始终点击 (只要你的网站有效且一个 -tag)

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