簡體   English   中英

當document.getElementById()沒有?

[英]When document.getElementById() doesn't?

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

根據MSDN ...

在IE8標准模式下, getElementById僅對ID屬性執行區分大小寫的匹配。 在IE7標准模式和以前的模式中,此方法對ID和NAME屬性執行不區分大小寫的匹配,這可能會產生意外結果。

您的代碼可能依賴於這些行為之一。


jQuery將其結果包裝在jQuery對象中 ,因此像$(".unused-class").remove()這樣的東西不會引發錯誤。 您可以檢查[0]處的.length或值,看看它是否與任何元素匹配。

好的,這就是答案。

我之前已經detach()了一個祖先元素,所以當從分離片段中的祖先元素執行時,jQuery find可以通過ID看到該元素。

當然,兩個jQuery都沒有上下文,而且本機方法沒有返回元素,因為它不是document那一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM