jQuery $()与document.getElementByID - 差异

Jim*_*ler 2 jquery jquery-selectors

可能重复:
document.getElementById vs jQuery

更多jQuery新手对你们造成伤害......

我有一些代码使用jQuery或多或少愉快.我的困惑在于,在一个案例中,我得到了一个标识符,该标识符是页面上div的ID.我希望$(theIdentifier)能够抓住这个对象,但事实并非如此; console.log返回'undefined'.但是,document.getElementById(theIdentifier)成功 - 它返回我正在寻找的东西,并且对div的进一步操作按预期工作.

什么在这里?它们不应该相同吗?为什么jQuery版本不工作?

显然很困惑; 谢谢你的建议!

Poi*_*nty 6

"$()"的参数必须是一个选择器:

var $thing = $("#" + thingId);
Run Code Online (Sandbox Code Playgroud)

这与调用"getElementById()" 几乎相同.区别在于后者关心"id"值(IE中除外,见下文),而基于jQuery选择器的代码将关注嵌入式CSS元字符.因此,如果你有一个带有"."的"id"值.在里面,像这样:

var foo = $('#thing.special');
Run Code Online (Sandbox Code Playgroud)

那么这将寻找一个id为"thing"和class"special"的元素,而不是一个id为"thing.special"的元素.

IE的问题:由于只有微软的一些神秘开发人员知道的原因,IE中的"getElementById()"代码将返回其"name"属性与参数匹配的元素.该行为不依赖于具有相同"id"值的元素的存在; 我认为它返回它在DOM中找到的第一个.(在这方面我不知道IE9.)

注意 - 注释正确地提到"$()"函数可以采用各种不同类型的参数,从而产生各种效果.当我说它"必须是一个选择器"时,我指的是它与字符串值参数的使用.