jQuery无法选择表外的单元格
我知道使用
是一个无效的标记,但它仍然是HTML DOM中的一个节点。 这就是我能够看到这两个单元格呈现的原因。 jQuery
无法让我获得那些细胞。 这是JSBin演示和代码
HTML
Cell inside table
Cells without table Cells without table
JS
var $a = $('#a'); var numCells1 = $('.cell1').length; var numCells2 = $('.cell2').length; $a.html('Num Cell1:' + numCells1 + ' Num Cell2:' + numCells2);
产量
Num Cell1:1 Num Cell2:0
为什么Num Cell2为0? 我究竟做错了什么 ?
这就是浏览器的诀窍,jQuery没有任何问题。 如果
不在table
,浏览器将不会呈现
,并且只删除所有标记,只留下纯文本。 检查浏览器中的元素面板以查看标记..没有一个cell2
类的cell2
检查元素,您将看到浏览器丢弃了无效标记并且只显示文本。
但它仍然是HTML DOM中的一个节点
这是一个错误的假设,见3.2.1语义 :
作者不得将元素,属性或属性值用于除适当的预期语义目的之外的目的,因为这样做会阻止软件正确处理页面。
[…]
作者不得使用本规范或其他适用规范不允许的元素,属性或属性值,因为这样做会使语言在将来难以扩展。
特别是因为HTML5建议规定了特定的解析器行为,其中
只能在“in table”状态下正确解析。
也可以看看:
- 表中的意外标记 (相关,显示表中的其他怪癖)
TR仅在TABLE内有效。 浏览器可能完全忽略了HTML的那一部分。
您始终可以使用SCRIPT标记放置您想要的任何内容
并使用jQuery重新创建元素:
var tr = $( $('#something').html() );