2012-05-03 1 views
1

У меня есть код jQuery, который отлично работает в Firefox и Chrome, но не работает в Internet Explorer 8 (не тестировался в других версиях IE). Internet Explorer работает в стандартном режиме.Почему динамическое добавление элемента списка работает в Chrome и Firefox, но не в IE8?

Целью приведенного ниже кода является создание нового элемента списка на лету. Его содержимое соответствует значению формы, которая находится внутри элемента скрытого раздела. Что происходит при использовании IE, так это то, что элемент раздела становится невидимым, а li добавляется в список, но пуст.

Что не так с этим кодом в IE?

$('ul.elementlist').on('click', '.add-element-icon', function (event) { 
    var plusIcon = $(this); 
    plusIcon.hide(); 

    var parentLi = plusIcon.parent(); 

    var before = parentLi.attr('id'); 

    var after = parentLi.next().attr('id'); 
    if (typeof after === "undefined") { 
     after = 'none'; 
    } 

    var li = $('<li class="element">').html($('section.add-element').html()); 
    $('input[name="elementBefore"]', li).val(before); 
    $('input[name="elementAfter"]', li).val(after); 
    li.insertAfter(parentLi); 
}); 
+0

Работает ли он в стандартном режиме IE8 или в стандарте IE7? – kroehre

+0

@ Kroehre Это режим стандартов IE8. –

+1

Попробуйте добавить это перед любым кодом, просто чтобы подтвердить, что это не проблема. 'document.createElement (" section ");' –

ответ

4

Поскольку вы используете section элемент я предположил бы, что вы делаете использование других элементов HTML5 и с использованием HTML5 доктайпа: <!DOCTYPE html>. В этих предположениях я бы сказал, что вам нужно сделать несколько вещей, чтобы сделать вашу разметку «дружественной IE».

Сначала убедитесь, что IE действительно работает в IE8 Standards compatibility mode*, добавив следующий мета-тег в головной секции:

<meta http-equiv="x-ua-compatible" content="IE=8"/> 

Сразу же после совместимости стандартов настройки добавить ссылку на html5shiv, который является Шив JavaScript для IE распознавать и стилизовать элементы HTML5:

<!--[if IE]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

Между этими двумя изменениями должно быть хорошо идти. После изменений заставляют IE обновлять полный ресурс, нажимая CTRL + F5.

* Если это новый веб-сайт, вы можете рассмотреть возможность использования IE=edge, поскольку он сообщает Internet Explorer использовать самый высокий доступный режим.

+1

Могу я предложить IE = edge – Fresheyeball

+0

@Fresheyeball Мне не было известно о 'IE = edge'. ***румянец*** – ahsteele

Смежные вопросы