我有一些JavaScript可以通过HTML文档中的ID获取元素。
在一个特定场景中,document.getElementById(idString)方法在IE8兼容模式下返回null,但是jQuery等效工作。我需要弄清楚为什么原生呼叫不起作用。
以下是一个例子:
var myId = "e_" + someId;
var myNativeDiv = document.getElementById(myId);
var myjQueryDiv = $("#" + myId);
alert(myNativeDiv + " - " + myjQueryDiv); // alerts "null - [Object object]"
我已检查过myId
在文档中是唯一的。
任何调查渠道都表示赞赏。
更新 - 实际上,myjQueryDiv
也是空的,但我想jQuery使它不为空。但是,调用parentDom.find("#" + myId);
确实返回了正确的元素,其中parentDom是我需要找到的元素的祖先。
答案 0 :(得分:5)
在IE8标准模式下,
getElementById
仅对ID
属性执行区分大小写的匹配。在IE7标准模式和以前的模式中,此方法对ID和NAME属性执行不区分大小写的匹配,这可能会产生意外结果。
您的代码可能依赖于其中一种行为。
jQuery将其结果包装在jQuery object中,因此$(".unused-class").remove()
之类的内容不会引发错误。您可以查看.length
或[0]
处的值,看看它是否与任何元素匹配。
答案 1 :(得分:1)
答案 2 :(得分:0)
好的,这就是答案。
我之前已detach()
编辑了一个祖先元素,因此当从分离片段中的祖先元素执行时,jQuery find可以通过ID查看该元素。
当然,两个jQuery都没有上下文,而且本机方法没有正确地返回元素,因为它不是document
的那一部分。