jQuery html()和自闭标签

UXT*_*XTE 11 html javascript jquery dom

使用jQuery html()创建自闭元素时会出现以下问题:

$('#someId').html('<li><input type="checkbox" /></li>')
Run Code Online (Sandbox Code Playgroud)

将创造

<li><input type="checkbox"></li>
Run Code Online (Sandbox Code Playgroud)

它正确关闭<li>标签但不关闭<input>

这似乎是来自html()函数中使用的innerHTML的一个问题.

我已经到处寻找并为此找到了解决方案但是该页面不再可用,如您所见:http://dev.jquery.it/ticket/3378

有谁知道如何解决这个问题?

cle*_*tus 7

为了澄清,这是有效的HTML:

<input type="checkbox">
Run Code Online (Sandbox Code Playgroud)

这是有效的XML(包括XHTML):

<input type="checkbox"/>
Run Code Online (Sandbox Code Playgroud)

但它不是有效的HTML.话虽这么说,大多数浏览器可能会接受它(但如果这对您来说意味着什么,那么文档将无法通过验证).

html()用途innerHTML.在IE和可能的其他浏览器中,这有问题,因为XHTML仍然被建模为HTML DOM.请参阅内部IE-HTML DOM仍然不符合XHTML.

基本上,使用XHTML的理由很少.这是一个跨浏览器的噩梦.有关为什么要看XHTML的详细概要- 是否为传统上不是坏习惯的元素编写自闭标签?,尤其是第一个答案.