当document.getElementById()没有?

时间:2011-07-29 10:56:02

标签: javascript jquery getelementbyid

我有一些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是我需要找到的元素的祖先。

3 个答案:

答案 0 :(得分:5)

According to MSDN ...

  

在IE8标准模式下,getElementById仅对ID属性执行区分大小写的匹配。在IE7标准模式和以前的模式中,此方法对ID和NAME属性执行不区分大小写的匹配,这可能会产生意外结果。

您的代码可能依赖于其中一种行为。


jQuery将其结果包装在jQuery object中,因此$(".unused-class").remove()之类的内容不会引发错误。您可以查看.length[0]处的值,看看它是否与任何元素匹配。

答案 1 :(得分:1)

适合我的工作

答案 2 :(得分:0)

好的,这就是答案。

我之前已detach()编辑了一个祖先元素,因此当从分离片段中的祖先元素执行时,jQuery find可以通过ID查看该元素。

当然,两个jQuery都没有上下文,而且本机方法没有正确地返回元素,因为它不是document的那一部分。