Jquery $ ('# someID> div'). Each (function () {..}) не работает в IE - PullRequest
4 голосов
/ 22 ноября 2011

Я не сталкиваюсь с этой проблемой, работая на локальном хосте, только когда я захожу на страницу, используя IP-адрес моей системы, это происходит, и это происходит только с IE !!(работает во всех других браузерах)

кстати, я использую Tomcat V6.0.0.29, IE8

Я пытался отлаживать код JS с помощью отладчика инструментов разработчика IE, конечно, когда я открываюпри использовании http://localhost:8080/ все работает отлично, но когда я использую http://myIP:8080/, этот цикл создает проблему: -

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

Поскольку этот цикл вообще не работает, он просто пропускает его,Я проверил идентификаторы, с которыми они в порядке, более того, он работает в localhost, почему это должно вызывать проблемы при доступе к нему с использованием моего IP?

Примечание: - a.(исправление) Проблема только в IE7, она отлично работает в IE8.

b.Оказывается, происходит что-то странное!Я использую IE8, когда открываю эту веб-страницу с помощью localhost, инструменты разработчика показывают, что она работает в стандартах IE8, но когда я использую IP-адрес для доступа к этой странице, инструменты разработчика показывают, что она работает в стандартах IE7.Когда я изменил стандарты на IE8, это сработало (используя IP-адрес)!

c.Но проблема в том, почему, черт возьми, он не работает с IE7 !!Как и во всем работает, кроме цикла, упомянутого выше.

Ответы [ 4 ]

2 голосов
/ 23 ноября 2011

Наконец я узнал, что вызывало проблему в 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>

jquery, который я написал для обхода этих div, был чем-то вроде

$ ("# divId> div"). Each (function () {..});

Теперь для первого уровня div, проходящий через div непосредственно внутри div с идентификатором "div1", отлично работал в IE7, но когда я сделал что-то вроде: -

$ ("# div2> div "). each (function () {..});

Это работало во всех браузерах (даже в IE8 !!), но не в IE7.Это потому, что, по-видимому, IE7 требует точного дочернего селектора для div.Поэтому для IE7 нужно написать что-то вроде этого: -

$ ("# div1> # div2> div"). Each (function () {..});

для обходаdiv внутри div с идентификатором "div2"

Так что проблема была вызвана просто моим незнанием IE7 !!извините, спасибо, ребята!

1 голос
/ 22 ноября 2011

Виновным в IE является то, что браузер не кэширует страницу при загрузке с локального хоста, а читает из кеша при использовании ip.Убедитесь, что вы загружаете страницу в пустой кеш со своего ip.

0 голосов
/ 10 ноября 2016

Это может быть связано с групповой политикой вашей компании по принуждению сайтов интрасети с использованием определенной версии IE в режиме совместимости.У меня возникла точно такая же проблема, когда я представлял некоторые библиотеки IE10 + Javascript на своей странице.

IE Compatibility View Settings

Чтобы обойти это, вы можете либо попросить ИТ-отдел вашей компании изменить политику, либо заставить браузер не использовать представление совместимости со следующим тегом.

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

Дополнительные сведения об этом теге можно найти в теме ниже.

StackOverflow - отключение режима совместимости IE с использованием тегов

0 голосов
/ 22 ноября 2011

Проверьте, загружен ли ваш скрипт при использовании вашего IP-адреса.Иногда браузеры не загружают сценарии в особых ситуациях (например, когда вы хотите загрузить сценарий из источника http на страницу https).Также вам следует проверить конфигурацию безопасности IE.
Чтобы проверить, загружен и выполнен ваш скрипт, просто поместите оператор alert('loaded') в начале кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...