簡體   English   中英

Jquery $('#someID> div')。each(function(){..})在IE中不起作用

[英]Jquery $('#someID > div').each(function(){..}) not working in IE

只有當我使用我的系統的IP地址訪問頁面時,我才會在使用localhost時遇到此問題,這種情況只會發生在IE! (適用於所有其他瀏覽器)

順便說一句,我使用的是Tomcat V6.0.0.29,IE8

我嘗試使用IE開發工具調試器來調試JS代碼,當我使用http://localhost:8080/打開時,一切都運行得很好,但是當我使用http://myIP:8080/這個循環給出了一個問題: -

$('#someId > div').each(function(){...}); 

由於在這個循環中根本沒有運行,它只是跳過它。 我已經檢查了它們的ID,而且它在localhost中的工作原因為什么當我使用我的IP訪問它時它會出現問題?

注意: - a。 (更正)問題只出現在IE7中,它在IE8中完美運行。

事實證明發生了一些奇怪的事情! 當我使用localhost打開此網頁時,我正在使用IE8,開發人員工具顯示其工作在IE8標准,但當我使用IP地址訪問此頁面時,開發人員工具顯示其工作在IE7標准。 當我將標准更改為IE8時,它工作(使用IP地址)!

C。 但問題是為什么它不適合IE7! 因為除了上面提到的循環之外,一切都有效。

最后我才知道IE7中導致問題的原因。 考慮以下情況: -

<div id="div1">abc
          <div id="div2">def
                   <div>hjs</div>
                   <div>zyx</div>
          </div>
          <div id="div3">xsj
                   <div>ask</div>
                   <div>iue</div>
          </div>
</div>

我為遍歷這些div而編寫的jquery就是這樣的

$(“#divId> div”)。each(function(){..});

現在為第一級div正在遍歷div內部的div,id為“div1”在IE7中完美運行,但當我做了類似的事情: -

$(“#div2> div”)。each(function(){..});

這適用於所有瀏覽器(即使在IE8中),但在IE7中卻沒有。 這是因為顯然IE7需要div的精確子選擇器。 所以對於IE7,需要寫下這樣的東西: -

$(“#div1> #div2> div”)。each(function(){..});

用id“div2”遍歷div內的div

所以問題是因為我對IE7缺乏了解! 對不起,謝謝你們!

罪魁禍首是IE,它可能會變成一種邪惡的東西,因為瀏覽器在從localhost加載時沒有緩存頁面,而是在使用ip時從緩存中讀取它。 確保加載頁面以從ip清空緩存。

這可能是由於貴公司的組策略在兼容模式下使用特定版本的IE強制Intranet站點。 當我向我的頁面介紹一些IE10 + Javascript庫時,我遇到了完全相同的問題。

IE兼容性視圖設置

要解決此問題,您可以要求您的公司IT部門更改策略,或強制瀏覽器不使用帶有以下標記的兼容性視圖。

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

有關此標記的更多詳細信息,請參閱以下主題。

StackOverflow - 使用標簽強制關閉IE兼容模式

使用您的IP地址時,請檢查您的腳本是否已加載。 有時瀏覽器不會在特殊情況下加載腳本(例如,當您要將腳本從http源加載到https頁面時)。 您還應該檢查IE的安全配置。
要檢查腳本是否已加載和執行,只需在代碼的開頭添加一個alert('loaded')語句。

暫無
暫無

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

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