示例:
$(document).click(function() { blah });
// and
$('html').click(function() { blah });
答案 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)
document
是DOM Element which wraps the HTML - DOM Element
而html
是HTML DOM element
。 document
包括
文档的第一行-指定doctype
的那一行。对于前。 <!doctype html> (for HTML 5)
class, id and other attributes
,而document
不具有(也不能具有)这些attributes
。尝试$(document).addClass('test') v/s $('html').addClass('test');
,注意elements tab on developer console
上的区别。祝你好运...