jQuery $()与document.getElementByID – 差异

可能重复:
document.getElementById vs jQuery

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

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

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

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

“$()”的参数必须是一个选择器

var $thing = $("#" + thingId); 

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

 var foo = $('#thing.special'); 

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

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

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

你需要$(’#’+ theIdentifier)来获取ID总是#开头。

$接受一个CSS选择器,而不是一个标识符,所以它是:

 $('#' + identifier) 
 var el = document.getElementById('foo') $(el)... 

相当于:

 $('#foo')...