jQuery «работает частично» в IE

0

Я пытаюсь использовать jQuery для изменения некоторого css, когда экран меньше определенного размера (в основном это повторная реализация "экрана @media и (max-width: 1024px)", но у меня создается впечатление, что это не работает в более старых версиях IE, и мне это нужно).

Это работает во всех браузерах, но IE (по иронии судьбы). Он "частично" работает в IE (так что это не что-то супер фундаментальное, как jQuery, установлено неправильно). Некоторые css меняются должным образом. Другие части, похоже, вообще не меняются... но когда я выплевываю значения на консоли, они, похоже, меняются.

Вот код:

$(window).resize(function () {
        if ($(window).width() <= 1154) {
            $(".a").css("display", "none");
            $(".b").css("right", "0px");
        } else {
            $(".a").css("display", "inline");
            $(".b").each(
                function (itemIndex, item) {
                    var a = $(item).parents(".c").children(".a");
                    $(item).css("right", a.css("width"));
                }
            );
        }
    });

Идея заключается в том, что когда экран мал, скройте элементы класса "a" и отрегулируйте элементы класса "b" (которые находятся слева от "a" элементов, а также являются братьями и сестрами для них, как под элементами класса "c"), чтобы они заняли пустое место, где были "a".

Элементы "А" скрыты во всех браузерах. В некоторых версиях IE (9 и более ранних, я думаю) свойство "b" элементов правильно задано и вообще не изменяется. НО, если я регистрирую идентификатор элемента (каждый "b" имеет уникальный id) и свойство right каждый раз, когда я его изменяю, я получаю неожиданные результаты. Прежде всего, изменение размера, кажется, вызывается дважды каждый раз, когда я изменяю размер экрана (используя кнопку максимизировать/немоаксимизировать), которую я предполагаю, просто потому, что по некоторым причинам увольняются несколько событий, так что, может быть, это не большая проблема. Странно, когда я делаю экран меньше, фактическое значение "справа" после его установки отображается как 0 одновременно. Когда я делаю экран более крупным, фактическое значение "right" отображается как 0 в первый раз и 180 во второй раз (см. Ниже). Но, как показано на странице, правильное значение всегда выглядит как 180, а не 0.

setting b0 right=0px ... Actual value: 0px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 180px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 180px

Следует также упомянуть, если я рассмотрю "правильные" свойства на вкладке HTML, он всегда говорит 180 (неудивительно).

Спасибо за вашу помощь!

  • 0
    Какую версию jQuery вы используете? Хотя я не стал исследовать дальше, может быть, полезно знать, что «jQuery 2.x имеет тот же API, что и jQuery 1.x, но не поддерживает Internet Explorer 6, 7 или 8»
  • 0
    Последнее, что я знал, мы были на jQuery 1.6. Полезно знать!
Показать ещё 4 комментария
Теги:
internet-explorer

1 ответ

0

Поскольку я надеюсь, что вы действительно сможете решить свою проблему на основе моих комментариев, я объединю их в этот ответ:

Хотя вы предоставили подробное описание и соответствующие фрагменты кода к вашей проблеме, ваш вопрос можно улучшить, предоставив, например, JSFiddle - это очень хорошая практика, так как нужно изолировать конкретные проблемы к соответствующим компонентам. По крайней мере, это очень хороший способ дать другим легкий доступ к нему и возможность помочь. Затем вы можете просто сохранить свой JSFiddle и разместить постоянную ссылку на него по вашему вопросу в SO.

Что касается актуальной темы:

При работе с библиотеками всегда является хорошей отправной точкой для проверки несовместимости относительно соответствующей целевой платформы (платформ) - особенно при ориентации на очень старые версии чего-то и даже больше, когда речь идет об Internet Explorer.

Таким образом, с jQuery - как указано на их домашней странице: "jQuery 2.x имеет тот же API, что и jQuery 1.x, но не поддерживает Internet Explorer 6, 7 или 8". Хотя это и не было причиной этого вопроса, возможно, это было хорошо.

Как вы узнали сами, когда возились с вашим кодом, фактическая проблема, казалось, была специфическим выражением IE CSS, поэтому позвольте заметить, что в моих глазах всегда следует избегать выражений CSS, где это возможно. Они устарели с IE8 и больше не поддерживаются. Многие считали их плохими идеями в плане безопасности и производительности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню