繁体   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