jQuery在IE8中添加自闭式DIV标记

C B*_*uer 0 javascript jquery innerhtml internet-explorer-8

下面的代码根据表单上已有的数据设置编辑界面,工作正常.除了根据这篇msdn文章,任何自闭的标记(例如<div />:)都没有innerhtml属性.这使得我的个人jscript日历库扼杀了对正在创建的div的innerHTML赋值.

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);
        });
Run Code Online (Sandbox Code Playgroud)

我如何强制jQuery使用我下面概述的html而不是创建自闭合div?

编辑:由上面的结果导致的HTML代码是:

<div id="cal2" style="" class="jcalStyle hide"/>
Run Code Online (Sandbox Code Playgroud)

我需要它:

<div id="cal2" style="" class="jcalStyle hide"></div>
Run Code Online (Sandbox Code Playgroud)

编辑2:

Firefox正在生成HTML.我不知道为什么IE8会自动关闭(排空?)div.

T.J*_*der 5

文章并不是说自动关闭标签没有innerHTML.它说具有内容模型的标签(空格元素,在规范中,如此img)没有它.

另请注意,在HTML中,div无法编写<div/>(引用).必须写<div></div>.很多很多工具(例如jQuery)可以让你快速松散地遵守规则,但不要担心,jQuery实际上没有这个标记添加到你的页面标记中(它正在向DOM中添加元素,这是一个完全不同的东西).该<element/>语法允许在void元素(如img)和外部元素(如SVG内容)上使用.