这是:
var contents = document.getElementById('contents');
与此相同:
var contents = $('#contents');
鉴于 jQuery 已加载?
这是:
var contents = document.getElementById('contents');
与此相同:
var contents = $('#contents');
鉴于 jQuery 已加载?
不完全是!!
document.getElementById('contents'); //returns a HTML DOM Object
var contents = $('#contents'); //returns a jQuery Object
在 jQuery 中,要获得与 相同的结果document.getElementById
,您可以访问 jQuery 对象并获取该对象中的第一个元素(请记住,JavaScript 对象的行为类似于关联数组)。
var contents = $('#contents')[0]; //returns a HTML DOM Object
不。
调用document.getElementById('id')
将返回一个原始 DOM 对象。
调用$('#id')
将返回一个包含 DOM 对象并提供 jQuery 方法的 jQuery 对象。
因此,您只能像调用css()
或animate()
在$()
调用时调用 jQuery 方法。
您也可以编写$(document.getElementById('id'))
,它会返回一个 jQuery 对象并且等效于$('#id')
.
您可以通过编写从 jQuery 对象获取底层 DOM 对象$('#id')[0]
。
接近,但不一样。他们得到相同的元素,但 jQuery 版本被包裹在一个 jQuery 对象中。
等价物是这个
var contents = $('#contents').get(0);
或这个
var contents = $('#contents')[0];
这些将从 jQuery 对象中拉出元素。
关于速度差异的说明。将以下代码附加到 onclick 调用:
function myfunc()
{
var timer = new Date();
for(var i = 0; i < 10000; i++)
{
//document.getElementById('myID');
$('#myID')[0];
}
console.log('timer: ' + (new Date() - timer));
}
交替注释一个,然后注释另一个。在我的测试中,
的document.getElementById平均大约为35ms(波动从
25ms
最高52ms
的约15 runs
)
另一方面,
jQuery 平均大约200 毫秒(从
181ms
到222ms
大约15 runs
)。从这个简单的测试中,您可以看到 jQuery 花费了大约6 倍的时间。
当然,这已经结束了10000
迭代,所以在更简单的情况下,我可能会使用 jQuery 以方便使用以及所有其他很酷的东西,比如.animate
和.fadeTo
。但是,是的,在技术上getElementById
是相当多快。
不。第一个返回一个 DOM 元素,或 null,而第二个总是返回一个 jQuery 对象。如果没有contents
匹配id 的元素,则 jQuery 对象将为空。
返回的 DOM 元素document.getElementById('contents')
允许您执行诸如更改.innerHTML
(或.value
) 等操作,但是您需要在 jQuery 对象上使用jQuery 方法。
var contents = $('#contents').get(0);
更等效,但是如果没有contents
匹配id 的元素,document.getElementById('contents')
将返回 null,但$('#contents').get(0)
将返回 undefined。
使用 jQuery 对象的一个好处是,如果没有返回任何元素,您将不会收到任何错误,因为始终返回一个对象。但是,如果您尝试对null
返回的对象执行操作,则会出现错误document.getElementById