2012-05-01 50 views
2

我使用jQuery动态填充一些级联下拉控件时,页面加载。但是,当页面加载时,我的三个选择框中只有两个被识别。为什么DOM中不显示多个HTML选择标记?

考虑下面的HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html 
xmlns="http://www.w3.org/1999/xhtml"> <head> 
    <title></title> </head> <body> 
    <select id="one" /> 
    <select id="two" /> 
    <select id="three" /> </body> </html> 

当我在IE,火狐或Chrome打开此页面,只有两个选择框被渲染。 DOM中只有两种出现(使用萤火虫或类似物),但所有三种都出现在源代码中。

我能做些什么,让所有的控件显示出来?

+0

哪两个三个的显示? – Tim

+0

这里是一个的jsfiddle例如:http://jsfiddle.net/SWJ42/ –

+0

感谢的jsfiddle例子。漂亮的工具! – SpazDude

回答

5

简单:编写有效的HTML代码。浏览器正在尽力解析无效的HTML,但有时他们会扼杀它。

<select>不是自动关闭标签,它必须有一个结束标签和至少一个optionoptgroup元素。

<select id="one"><option></option></select> 
<select id="two"><option></option></select> 
<select id="three"><option></option></select> 

jsFiddle Demo

+0

所有元素都可以用XHTML中的自闭句法表示(除非它们具有必需的子元素,它们会选择这些元素)。它只是不兼容HTML。 – Quentin

+0

@Quentin查看本页的源代码:http://www.webdevout.net/articles/beware-of-xhtml-examples/6.html 它说它是有效的XHTML,它有XHTML文档类型,但它呈现错误。 – gcochard

+0

@Greg - 是吗?这证明了我说的话。有效但不兼容HTML。 – Quentin

6

validHTML-compatible标记。

你选择的元素应该有明确的结束标记和至少一个选项元素。

<select id="one"><option>foo</option></select> 
<select id="two"><option>foo</option></select> 
<select id="three"><option>foo</option></select> 
相关问题