下面的代码根据表单上已有的数据设置编辑界面,工作正常。除了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。
答案 0 :(得分:5)
文章并未说自闭标签没有innerHTML
。它说的是带有空内容模型的标记(void elements,在规范中,如img
)没有它。
另请注意,在HTML中,div
无法写入<div/>
(reference)。必须写成<div></div>
。许多工具(例如jQuery)可以让你快速松散地遵守规则,但不要担心,jQuery实际上并没有将标记添加到你的页面标记中(它正在添加元素)到DOM,完全不同的东西)。那个<element/>
语法只允许 在void元素(如img
)和外来元素(如SVG的东西)上使用。