93 jquery
我是一个JQuery初学者,虽然在一些代码中找到了一些例子.
$(document.body) 和 $('body')
谁能告诉我这两者有什么区别?
Jus*_*ier 71
它们引用相同的元素,区别在于当你说document.body你将元素直接传递给jQuery时.或者,当您传递字符串时'body',jQuery选择器引擎必须解释字符串以确定它引用的元素.
在实践中,要么完成任务.
如果您有兴趣,jQuery函数的文档中有更多信息.
jve*_*ema 15
这里的答案实际上并不完全正确.关闭,但有一个边缘情况.
区别在于$('body')实际上是通过标签名称选择元素,而document.body引用文档上的直接对象.
这意味着如果你(或流氓脚本)覆盖document.body元素(羞耻!)$('body')仍然有效,但$(document.body)不会.所以根据定义,它们并不等同.
我冒昧地猜测还有其他边缘情况(例如IE中的全局id'ed元素),它们也会触发相当于文档对象上覆盖的body元素,并且同样的情况也适用.
$(document.body)正在使用全局引用document来获取对它的引用body,而是$('body')一个选择器,其中jQuery将获取对该<body>元素的引用document.
我没有看到任何重大差异,也没有任何显着的性能增益.
我在浏览器中测试时发现时间差异很大.
我使用了以下脚本:
警告:运行此命令会使浏览器冻结一些,甚至可能导致崩溃.
var n = 10000000, i;
i = n;
console.time('selector');
while (i --> 0){
$("body");
}
console.timeEnd('selector');
i = n;
console.time('element');
while (i --> 0){
$(document.body);
}
console.timeEnd('element');Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
我做了1000万次互动,结果就是这些(Chrome 65):
选择器:19591.97509765625ms
元素:4947.8759765625ms
直接传递元素的速度比传递选择器快4倍.
| 归档时间: |
|
| 查看次数: |
156808 次 |
| 最近记录: |