$(document.body)和$(“body”)JQuery之间的区别

我是一个JQuery初学者,并在发现一些代码时通过一些例子。

$(document.body)$('body')

谁能告诉我这两个有什么区别?

他们引用相同的元素,不同的是,当你说document.body你直接将元素传递给jQuery。 或者,当您传递string'body' , jQueryselect器引擎必须解释string以找出它引用的元素。

在实践中,要么完成工作。

如果你有兴趣,在jQuery函数的文档中有更多的信息。

$(document.body)正在使用全局引用document来获取对body的引用,而$('body')是一个select器,jQuery将在其中获得对document <body>元素的引用。

我看不出有什么重大区别,从一个到另一个没有任何明显的性能收益。

应该没有什么区别,也许第一个是更高性能,但我认为这是微不足道(你不应该担心这个,真的)。

把你的<body>标签包装在一个jQuery对象中

这里的答案实际上并不完全正确。 closures,但有一个边缘情况。

不同之处在于$(“body”)实际上是通过标签名来select元素,而document.body则是引用文档上的直接对象。

这意味着如果你(或stream氓脚本)覆盖document.body元素(耻辱!)$(“身体”)仍然会工作,但$(document.body)不会。 所以根据定义,它们不是等价的。

我冒昧猜测还有其他边缘情况(如IE中的全局id'ed元素),这也会触发文档对象上重写的正文元素,并且也会应用相同的情况。

Outputwise两者是等价的。 尽pipe第二个expression式通过DOM根目录的顶部向下查找。 如果你已经有了document.body对象,那么你可能想避免额外的开销(尽pipe可能很小),以便JQuery进行换行。 请参阅http://api.jquery.com/jQuery/ #Selector上下文