是这样的:

var contents = document.getElementById('contents');

和这个一样:

var contents = $('#contents');

jQuery加载?


当前回答

不。第一个返回一个DOM元素或null,而第二个总是返回一个jQuery对象。如果没有匹配到id为contents的元素,jQuery对象将为空。

document.getElementById('contents')返回的DOM元素允许你做一些事情,比如改变. innerhtml(或.value)等,但是你需要在jQuery对象上使用jQuery方法。

var contents = $('#contents').get(0);

是更等价的,但是如果没有与内容id匹配的元素,document.getElementById('contents')将返回null,但$('#contents').get(0)将返回undefined。

使用jQuery对象的一个好处是,如果没有返回任何元素,也不会得到任何错误,因为对象总是返回的。但是,如果试图对document.getElementById返回的空值执行操作,将会得到错误

其他回答

不。第一个返回一个DOM元素或null,而第二个总是返回一个jQuery对象。如果没有匹配到id为contents的元素,jQuery对象将为空。

document.getElementById('contents')返回的DOM元素允许你做一些事情,比如改变. innerhtml(或.value)等,但是你需要在jQuery对象上使用jQuery方法。

var contents = $('#contents').get(0);

是更等价的,但是如果没有与内容id匹配的元素,document.getElementById('contents')将返回null,但$('#contents').get(0)将返回undefined。

使用jQuery对象的一个好处是,如果没有返回任何元素,也不会得到任何错误,因为对象总是返回的。但是,如果试图对document.getElementById返回的空值执行操作,将会得到错误

截至2019年,所有的答案都是旧的,你可以直接在javascript中访问id键域,只需尝试一下

<p id="mytext"></p>
<script>mytext.innerText = 'Yes that works!'</script>

在线演示! ——https://codepen.io/frank-dspeed/pen/mdywbre

以防别人撞到…这是另一个不同之处:

如果id包含HTML标准不支持的字符(参见这里的SO问题),那么即使getElementById可以找到它,jQuery也可能找不到它。

这发生在我的id包含“/”字符(例如:id=“a/b/c”),使用Chrome:

var contents = document.getElementById('a/b/c');

能找到我的元素,但是

var contents = $('#a/b/c');

没有。

顺便说一句,简单的修复是移动id到名称字段。JQuery使用以下方法轻松找到元素:

var contents = $('.myclass[name='a/b/c']);

var contents = document.getElementById('contents');

Var contents = $('#contents');

代码片段是不一样的。第一个返回一个Element对象(source)。 第二个是jQuery等效函数,返回一个包含0个或1个DOM元素的集合的jQuery对象。(jQuery文档)。jQuery内部使用document.getElementById()来提高效率。

在这两种情况下,如果找到多个元素,则只返回第一个元素。


当检查github项目的jQuery时,我发现下面的行片段似乎正在使用文档。getElementById代码(https://github.com/jquery/jquery/blob/master/src/core/init.js第68行起)

// HANDLE: $(#id)
} else {
    elem = document.getElementById( match[2] );

No.

调用document.getElementById('id')将返回一个原始DOM对象。

调用$('#id')将返回一个jQuery对象,该对象包装DOM对象并提供jQuery方法。

因此,只能在$()调用中调用css()或animate()等jQuery方法。

你也可以写$(document.getElementById('id')),它将返回一个jQuery对象,等价于$('#id')。

你可以通过编写$('#id')[0]从jQuery对象中获得底层DOM对象。