用于在 HTML 表格行之间添加行的 Jquery 语法

Posted

技术标签:

【中文标题】用于在 HTML 表格行之间添加行的 Jquery 语法【英文标题】:Jquery syntax for adding rows in between HTML table rows 【发布时间】:2012-02-17 19:18:24 【问题描述】:

在现有 html 表格行之间添加行的 jQuery 语法是什么?

<Table id="TEST"> <tr>1</tr> <tr>2</tr> </table> 

我要添加

<tr>xx</tr> 

在 1 到 2 之间

例如:

<tr>1</tr>   **<tr>xx</tr>** <tr>2</tr>

请注意这里没有行的 id。

修正最终外观

之前

<table id=Test><tr> <td>1 </td> </tr><tr> <td>2 </td> </tr></table>

之后

 <table id=Test><tr> <td>1 </td> </tr>  <tr> <td>xx </td> </tr> <tr> <td>2 </td></tr></table>

【问题讨论】:

【参考方案1】:

假设您正在寻找一种在第一条现有行之后插入新行的方法(并且您不是在寻找一种将其插入现有行内容描述的位置的方法),您可以使用after插入内容,eq 将匹配元素集减少到所需索引处的元素:

$("#TEST tr").eq(0).after("<tr><td>x</td></tr>");

请注意,我添加了 td 元素,因为将文本节点作为 tr 元素的子节点是无效的。

同样值得注意的是,使用 jQuery 选择“第一个”元素的方法多种多样。在这个问题的 5 个答案中,我们看到了 3 种不同的方法,而且还有更多。使用.eq(0) is the most efficient。

【讨论】:

【参考方案2】:

您的问题的答案(字面意思)是:

$("table#test tr:contains('1'").after('<tr>xx</tr>');

这意味着:在ID为“test”的表中包含“1”的&lt;tr&gt;之后添加“xx”。

我猜这不是你所需要的,你能告诉我们你到底想做什么吗?

有多种方法可以向元素添加内容。我建议看一下 jQuery Doc,尤其是 DOM Insertion, Around、DOM Insertion, Inside 和 DOM Insertion, Outside。

【讨论】:

【参考方案3】:

特别是为了浏览器之间的一致性,您应该将所有tr 包装在tbody 元素中。那么您可以after()/insertAfter() 新行(第一行之后)或before()/insertBefore() 行(最新行之前)。

http://api.jquery.com/after/http://api.jquery.com/before/http://api.jquery.com/insertAfter/http://api.jquery.com/insertBefore/

的例子 插入后:$('&lt;tr&gt;xx&lt;/tr&gt;').insertAfter($('tr:first')); 之后:$('tr:first').after('&lt;tr&gt;xx&lt;/tr&gt;');

【讨论】:

【参考方案4】:

类似这样的:

$('#TEST > tbody > tr').eq(0).after('<tr>xx</tr>');

【讨论】:

这可能行不通,因为浏览器倾向于在tabletr 之间插入tbody 元素。 所以,只需在代码中添加一个tbody...不是吗? 只要所有浏览器都插入tbody,就可以了。为了安全起见,您可能应该自己将tbody 添加到 HTML 中。但是,在这种情况下,不需要使用子选择器,因为我们正在寻找第一个元素,它总是一个子元素(它不能在嵌套表中)。 $('#TEST')[0] 将表格返回给我,但是当我使用 $('#TEST tr:gt(0)')[0] 时未定义或什么也不返回。我是这里有什么遗漏吗?我有超过 10 行 @SNA:尝试我的回答中描述的代码...我看到您使用的是不同的代码。【参考方案5】:
$('#test tr').first().append('<tr>xx</tr>');

您可以将first() 替换为eq(n)(其中n 是表格中0n-1 行之间的一个数字)并在任何现有行之后添加该行。

【讨论】:

【参考方案6】:
$('#TEST tr:gt(0)').after('<tr>xx</tr>');

gt 代表大于。请注意,行的索引从 0 开始,而不是 1。

【讨论】:

请记住,如果表格中有超过 2 行,这将在除第一行之外的所有行之后插入一个新行。 $('#TEST')[0] 将表格返回给我,但是当我使用 $('#TEST tr:gt(0)')[0] 时未定义或什么也不返回。我是这里有什么遗漏吗?我有超过 10 行。

以上是关于用于在 HTML 表格行之间添加行的 Jquery 语法的主要内容,如果未能解决你的问题,请参考以下文章

jQuery为表格每行添加按钮操作相应行的内容

sortable.js 实现两个不同的表格之间表格行的拖曳的功能

jQuery滑块范围:应用范围作为表格行的过滤器

[HTML表格]在databases显示行的附加信息

用于生成表格行的 JavaScript

使用 jQuery 选择表格行的值