当document.getElementById()没有?

bra*_*ter 3 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]"
Run Code Online (Sandbox Code Playgroud)

我已检查myId过该文档中的唯一内容.

任何调查途径都值得赞赏.


更新 - 实际上,myjQueryDiv也是空的,但我想jQuery使它不为空.但是,调用parentDom.find("#" + myId);确实返回了正确的元素,其中parentDom是我需要查找的元素的祖先.

小智 5

根据MSDN ...

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

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


jQuery将其结果包装在jQuery对象中,因此$(".unused-class").remove()不会引发错误.您可以检查.length或值[0]以查看它是否实际匹配任何元素.