hQml-атрибут jQuery не работает в IE - PullRequest
20 голосов
/ 05 января 2009

Я использую раскрывающиеся списки стран и штатов в своей форме. Всякий раз, когда пользователь выбирает страну в раскрывающемся списке, соответствующие состояния страны будут заполняться раскрывающимся списком состояний. Я заполняю состояния в раскрывающемся списке с помощью вызова AJAX. Проблема в том, что штаты заполняются в Mozilla, но в IE это не работает. Я предполагаю, что есть некоторая проблема в jQuery при загрузке состояний в раскрывающемся списке состояний. Я использую код JQuery

$('select#edit-country').change(function(e) {

    $.getJSON("loadContactUsStates",{id: $(this).val(), ajax: 'true'}, function(j){
        var options = '';

        for (var i = 0; i < j.length; i++) { 
            options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';

        }

    <!-----I guess the problem is with the below line------------------>
       $("select#edit-state").html(options);

    })//end json

});

Ответы [ 24 ]

1 голос
/ 11 января 2012

В моем случае это было так просто, как изменить версию jquery. Я использовал jquery-1.3.2, и я добавил эту строку

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script>

вместо импорта jquery-1.3.2. Не изменяя ничего в моем исходном коде, функция .prepend прекрасно работает в IE, FF и Chrome.

1 голос
/ 29 сентября 2010

У меня возникла та же проблема после получения AJAX-запроса HTML с функцией jQuery.ajax () и последующей попытки анализа результата с jQuery (html_result_data) . Решением было убрать заголовок и все вкладки и «возвраты» в html_result_data следующим образом:

success: function( data ) {
   // God this is ugly
   data = data.split("<body>")[1].split("</body>")[0];
   data = data.split("\t").join("").split("\r").join("").split("\n").join("");                      
   data = jQuery( data );
   ...
}
1 голос
/ 15 февраля 2013

Для меня я мог только заставить его работать, поместив свой выбор в div заполнителя, а затем написать через .html (); все заявление к этому div. Работает полностью.

1 голос
/ 06 января 2012

Комментарий Jukums заставил меня попробовать отключить вывод отладочной информации ColdFusion, а затем .html () работал для меня в IE8 Для принудительного отключения вывода отладки:

<cfsetting showdebugoutput="No">
0 голосов
/ 06 марта 2012

Как решение здесь не упоминается: У меня просто была такая же проблема в IE8 при активации режима совместимости. Решением было передать объект jQuery в функцию .html () следующим образом:

$("select#edit-state").html($(options));

Это не было проблемой, если опции были объектом jQuery и также были скомпонованы как единое целое. Но в приведенном выше примере это должно сработать - по крайней мере, для меня это помогло.

0 голосов
/ 13 апреля 2010

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

или .. и т. Д.

проверить правильность всех данных

если это ajax-запрос, то для отладки можно быстро добавить текстовую область вне заполняемой области и заполнить текстовую область возвращенными данными. затем проверьте эти данные на несоответствия. Jquery.html отлично работает с IE

0 голосов
/ 05 января 2009

Также обратите внимание, что если вы используете префикс tagName в своем селекторе, это медленнее, чем просто использование идентификатора.

В вашем случае просто используйте $("#edit-state").append(options)

0 голосов
/ 02 июня 2015

В моем случае проблема была в том, как я комментировал свой javascript в загружаемых данных.

// Works fine

/* Works fine */

<!-- This causes a syntax error in IE -->

У меня никогда не было проблем с такими комментариями в IE раньше, только при использовании ajax для загрузки на существующую страницу. Нет проблем с другими браузерами.

0 голосов
/ 20 апреля 2010

Используете ли вы 1.4.2? Существует проблема с методом cleanData, использующим неверные записи в кеше в IE. Ошибка и соответствующее исправление можно найти здесь . Это влияет на звонки на .html()

0 голосов
/ 13 апреля 2010

В IE8 перейдите на Инструменты -> Параметры Интернета ->, затем выберите вкладку advanced . Затем нажмите reset , чтобы сбросить все настройки Internet Explorer.

Я думал, что у меня проблема с кодом, но проблема была в IE8. Это сработало.

Удачи и надеюсь, что это поможет.

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