backbone.js 将tr标签与div组合在一起真的是个坏主意吗?

s2j5cfk0  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(166)

我正在用Backbone.js开发应用程序,View类在渲染后返回一个元素。如果我使用div或span,这是可以的。但是当我开始将对象渲染为tr行时,问题就开始了。一个对象应该渲染为2-3行。那么我可以使用这种结构吗?

<table>
    <div>
        <tr>...</tr>
        <tr>...</tr>

    </div>
</table>
ylamdve6

ylamdve61#

紧接在table标记内的div无效。请改用tbody

gzszwxb4

gzszwxb42#

是的,这是一个非常糟糕的主意。
HTML规范不允许div元素成为table元素的子元素,因此它会触发浏览器中的错误恢复例程。
给定此输入:

<table>
  <tr><td>1</td></tr>
<div>
  <tr><td>2</td></tr>
  <tr><td>3</td></tr>
</div>
  <tr><td>4</td></tr>
<div>
  <tr><td>5</td></tr>
  <tr><td>6</td></tr>
</div>

Firefox将生成的DOM(您可以使用Inspect Element功能查看)如下所示:

<div>
  </div><div>
  </div><table>
  <tbody><tr><td>1</td></tr>
<tr><td>2</td></tr>
  <tr><td>3</td></tr>

  <tr><td>4</td></tr>
<tr><td>5</td></tr>
  <tr><td>6</td></tr>

</tbody></table>

请注意,div元素已从表中删除并放置在表之前。这使得它们无法用于操作行。
HTML提供了head、tfoot和tbody元素来对表格行进行分组。使用这些元素中的适当元素来代替div元素(您只能有一个head和一个tfoot,但对tbody元素的数量没有限制)。

bihw5rsg

bihw5rsg3#

这不是有效的HTML。您不能在表格中嵌套块元素或内联元素,只能嵌套表格元素,如<tbody><tr><thead>。当然,您可以在表格单元格中嵌套<div><td><th>)。

相关问题