更多jQuery新手对你们造成伤害......
我有一些代码正在或多或少地使用jQuery。我的困惑在于,在一个案例中,我得到了一个标识符,该标识符是页面上div的ID。我希望$(theIdentifier)能够抓住这个对象,但事实并非如此; console.log返回'undefined'。但是,document.getElementById(theIdentifier)成功 - 它返回我正在寻找的东西,并且对div的进一步操作按预期工作。
这里有什么?它们不应该相同吗?为什么jQuery版本不工作?
显然很困惑;谢谢你的建议!答案 0 :(得分:6)
“$()”的参数必须是选择器:
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。)
注意 - 注释正确地提到“$()”函数可以采用各种不同类型的参数,从而产生各种效果。当我说它“必须是一个选择器”时,我指的是它与字符串值参数的使用。
答案 1 :(得分:1)
你需要$('#'+ theIdentifier)来获取ID总是#在开头。
答案 2 :(得分:0)
$接受CSS选择器,而不是标识符 所以它是:
$('#' + identifier)
答案 3 :(得分:0)
var el = document.getElementById('foo')
$(el)...
相当于:
$('#foo')...