2011-07-29 248 views
3

我有一些JavaScript从HTML文档中通过ID获取元素。当document.getElementById()不?

在一个特定的场景中,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

你可以添加html例子吗? –

+0

您可以发布一些HTML以复制出现此错误的“特定场景”吗? –

+0

可能是由于myId的类型 – nidhin

回答

0

OK所以这里的答案。

我以前有detach() ed祖先元素,所以jQuery查找可以从分离的片段中的祖先元素执行时通过ID看到元素。

当然,jQuery都找不到上下文,并且本地方法没有正确返回元素,因为它不在document的那一点上。

5

According to MSDN ...

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

您的代码可能依赖于这些行为之一。


的jQuery包裹在一个jQuery object它的结果,使之类的东西$(".unused-class").remove()不会引发错误。您可以检查.length或值[0]以查看它是否实际匹配任何元素。

相关问题