这是:
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