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

时间:2011-11-22 07:52:52

标签: javascript jquery internet-explorer

我只是在使用我的系统的ip地址访问页面时,在使用localhost时不会遇到此问题,这种情况只会发生在IE! (适用于所有其他浏览器)

顺便说一句,我使用的是Tomcat V6.0.0.29,IE8

我尝试使用IE开发人员工具调试器调试JS代码,当我使用http://localhost:8080/打开时,一切都运行得很好,但是当我使用http://myIP:8080/时,这个循环会出现问题: -

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

因为在这个循环中根本没有运行,所以它只是跳过它。我已经检查了它们的ID,而且它在localhost中的工作原因为什么当我使用我的IP访问它时它会出现问题?

注意: - 一个。 (更正)问题只出现在IE7中,它在IE8中完美运行。

湾事实证明发生了一些奇怪的事情!当我使用localhost打开此网页时,我使用IE8,开发人员工具显示其工作在IE8标准,但当我使用IP地址访问此页面时,开发人员工具显示其工作在IE7标准。当我将标准更改为IE8时,它工作(使用IP地址)!

℃。但问题是为什么它不适合IE7!因为除了上面提到的循环之外,一切都有效。

4 个答案:

答案 0 :(得分:2)

最后我才知道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&gt; div”)。each(function(){..});

现在,第一级div正在div中直接遍历div,id为“div1”,在IE7中完美运行,但是当我做了类似的事情时: -

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

这适用于所有浏览器(即使在IE8中),但在IE7中却没有。这是因为显然IE7需要div的精确子选择器。 所以对于IE7,需要写下这样的东西: -

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

用于遍历div中div,id为“div2”

所以问题是因为我对IE7缺乏了解! 对不起,谢谢你们!

答案 1 :(得分:1)

罪魁祸首是IE,它可能会变成一种邪恶的东西,因为浏览器在从localhost加载时没有缓存页面,而是在使用ip时从缓存中读取它。确保加载页面以从ip清空缓存。

答案 2 :(得分:0)

使用您的IP地址时,检查您的脚本是否已加载。有时浏览器不会在特殊情况下加载脚本(例如,当您要将脚本从http源加载到https页面时)。您还应该检查IE的安全配置 要检查脚本是否已加载和执行,只需在代码的开头添加alert('loaded')语句。

答案 3 :(得分:0)

这可能是由于贵公司的组策略在兼容模式下使用特定版本的IE强制Intranet站点。当我向我的页面介绍一些IE10 + Javascript库时,我遇到了完全相同的问题。

IE Compatibility View Settings

要解决此问题,您可以要求您的公司IT部门更改策略,或强制浏览器不使用带有以下标记的兼容性视图。

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

有关此标记的更多详细信息,请参阅以下主题。

StackOverflow - Force IE compatibility mode off using tags