有条件地删除

时间:2009-09-29 18:20:04

标签: jquery

我正在创建一个表格的第一行来显示标题文本,这将为其下面的一组行赋予意义。

即将举行的活动

然后循环通过模型来构建即将发生的事件的表列表。但是可能存在客户端条件导致没有呈现行,这使得不需要标题行。

如何从“即将发生的事件迭代器”的末尾返回并删除第一行(id =“HeadRow”)?

6 个答案:

答案 0 :(得分:2)

如果您不需要标题行,那么您可能不需要该表,那么为什么不隐藏整个表呢?

$("table").hide();

然后,稍后,如果要显示某些内容,则不必重建标题行,只需更新表格并使其可见即可。

答案 1 :(得分:1)

如果不存在行而不是删除标题行,我会采用James Black的方法隐藏整个表格。

如果只有标题行存在,您可以在一切触发后运行快速检查以加载行并隐藏表:

if ($("#myTable tr").length == 1) {
  $("#myTable").hide();
}

答案 2 :(得分:0)

$("tr#HeadRow").remove(); 
// Removes <tr id='HeadRow'><td>foo</td>...</tr> from DOM

答案 3 :(得分:0)

如果您确保关闭该行以使其成为有效的html,则可以执行以下操作:

$("#headrow").remove()

答案 4 :(得分:0)

我不是静态地定义标题行,而是将其与表行的其余部分一起动态输出。像这样,在伪代码中:

int numThings = 0;
for each (thing in dataModel) {
    if (thing.wantToDisplay()) {
       if (++numThings == 1) {
           outputHeaderRow();
       }
       outputThing(thing);
    }
}

顺便说一下,你应该使用&lt; th&gt;而不是&lt; td&gt;。

答案 5 :(得分:0)

通常,我要做的是留下标题行,但插入一行,其中包含一条很好的描述性消息,表明没有任何内容可以显示。

<table>
<thead>
   <tr><th>....</th></tr>
<thead>
<tbody>
   <% if (Model.Results.Count() > 0) {
         foreach (var model in Model.Results) { %>
           <tr>
             <td><%= Html.Encode( model.Name ) %></td>
             ...
           </tr>
   <%    }
      }
      else {  %>
           <tr><td colspan="N">Query returned no results.</td></tr>
   <% } %>
</tbody>
<tfoot>
  ...
</tfoot>
</table>