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

时间:2011-02-25 13:31:07

标签: javascript jquery internet-explorer-8 innerhtml

下面的代码根据表单上已有的数据设置编辑界面,工作正常。除了this msdn article之外,任何自闭的标记(例如:<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);
        });

如何强制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 个答案:

答案 0 :(得分:5)

文章并未说自闭标签没有innerHTML。它说的是带有内容模型的标记(void elements,在规范中,如img)没有它。

另请注意,在HTML中,div无法写入<div/>reference)。必须写成<div></div>。许多工具(例如jQuery)可以让你快速松散地遵守规则,但不要担心,jQuery实际上并没有标记添加到你的页面标记中(它正在添加元素)到DOM,完全不同的东西)。那个<element/>语法只允许 在void元素(如img)和外来元素(如SVG的东西)上使用。