jQuery добавление самозакрывающегося тега DIV в IE8 - PullRequest
0 голосов
/ 25 февраля 2011

Приведенный ниже код устанавливает интерфейс редактирования из данных, которые уже есть в форме, и работает нормально.За исключением того, что согласно этой статье MSDN , любой самозакрывающийся тег (например: <div />) не имеет свойства innerhtml.Это делает так, что моя личная библиотека календарей jscript перекрывает присвоение innerHTML создаваемому div.

fields.find("p[item][type='Calendar']").each(function() {
            index++;
            var currentText = $(this).html();
            $(this).html("<input id=\"calInput" + index + "\" type=\"text\" value=\"" + currentText + "\" /><div id=\"cal" + index + "\"></div>");
            myFactory.newCalendar("cal" + index, "calInput" + index);
        });

Как заставить jQuery использовать html, который я обрисовал ниже, вместо создания самозакрывающегося div?

Редактировать: HTML-код, полученный в результате выше:

<div id="cal2" style="" class="jcalStyle hide"/>

Мне нужно, чтобы оно было:

<div id="cal2" style="" class="jcalStyle hide"></div>

Редактировать 2:

Firefox правильно генерирует HTML.Я не знаю, почему IE8 самозакрывающийся (аннулирующий?) Div.

1 Ответ

5 голосов
/ 25 февраля 2011

В статье не говорится, что у самозакрывающихся тегов нет innerHTML. Это говорит о том, что теги с пустой моделью содержимого ( пустые элементы , в спецификации, например, img) не имеют его.

Также обратите внимание, что в HTML div нельзя записать <div/> ( ссылка ). Должно быть написано <div></div>. Многие, многие инструменты (например, jQuery) позволяют быстро и свободно играть с правилами, но не волнуйтесь, jQuery на самом деле не добавляет этот тег к разметке вашей страницы (это добавляет элемент в DOM, что совсем другое дело). Этот синтаксис <element/> только разрешен для пустых элементов (например, img) и внешних элементов (например, SVG).

...