问:
在 jQuery 中将附加行作为最后一行添加到表中的最佳方法是什么?
这可以接受吗?
$('#myTable').append('my datamore data');
您可以添加到这样的表中的内容是否有限制(例如输入、选择、行数)?
答1:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
您建议的方法不能保证为您提供您正在寻找的结果 - 如果您有 tbody 例如:
......
你最终会得到以下结果:
.........
因此,我会推荐这种方法:
$('#myTable tr:last').after('......');
您可以在 after() 方法中包含任何内容,只要它是有效的 HTML,包括上面示例中的多行。
更新:在最近有此问题的活动后重新访问此答案。 eyelidlessness 很好地说明了 DOM 中总会有一个 tbody;这是真的,但前提是至少有一行。如果您没有行,则不会有 tbody,除非您自己指定了一个。
DaRKoN_ suggests 附加到 tbody 而不是在最后一个 tr 之后添加内容。这解决了没有行的问题,但仍然不是防弹的,因为理论上您可以有多个 tbody 元素并且行将被添加到每个元素中。
权衡一切,我不确定是否有一个单一的解决方案可以解决所有可能的情况。您需要确保 jQuery 代码与您的标记相符。
我认为最安全的解决方案可能是确保您的 table 始终在您的标记中包含至少一个 tbody,即使它没有行。在此基础上,您可以使用以下内容,无论您拥有多少行(并且还考虑多个 tbody 元素):
$('#myTable > tbody:last-child').append('......');
答2:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
jQuery 有一个内置的工具来动态操作 DOM 元素。
您可以像这样向表中添加任何内容:
$("#tableID").find('tbody')
.append($('')
.append($('')
.append($('')
.attr('src', 'img.png')
.text('Image cell')
)
)
);
jQuery 中的 $(‘’) 是一个标签对象,它可以有几个可以设置和获取的 attr 属性,还有 text,它表示此处的标签之间的文本:text。
这是一些非常奇怪的缩进,但你更容易看到这个例子中发生了什么。
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
答3:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
自从 @Luke Bennett 回答了这个问题后,情况发生了变化。这是一个更新。
jQuery 从 1.4(?) 版开始自动检测您尝试插入的元素(使用任何 append()、prepend()、before() 或 after() 方法)是否为 并将其插入表中的第一个 或将其包装到新的 中(如果不存在)。
所以是的,您的示例代码是可以接受的,并且可以在 jQuery 1.4+ 上正常工作。 😉
$('#myTable').append('my datamore data');
huntsbot.com – 高效赚钱,自由工作
不错,+1,我也是
答4:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
如果您有一个 和一个 怎么办?
如:
Foo
footer information
然后它会在页脚中插入新行 - 而不是在正文中。
因此,最好的解决方案是包含一个 标记并使用 .append,而不是 .after。
$("#myTable > tbody").append("row content");
答5:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
我知道您要求使用 jQuery 方法。我看了很多,发现我们可以通过以下函数以比直接使用 JavaScript 更好的方式做到这一点。
tableObject.insertRow(index)
index 是一个整数,它指定要插入的行的位置(从 0 开始)。也可以使用-1的值;这导致新行将插入到最后一个位置。
此参数在 Firefox 和 Opera 中是必需的,但在 Internet Explorer、Chrome 和 Safari 中是可选的。
如果省略此参数,insertRow() 将在 Internet Explorer 的最后一个位置以及 Chrome 和 Safari 的第一个位置插入一个新行。
它适用于所有可接受的 HTML 表格结构。
以下示例将在最后插入一行(-1 用作索引):
function displayResult()
{
document.getElementById("myTable").insertRow(-1).innerHTML = '<td>1</td><td>2</td>';
}
cell 1
cell 2
cell 3
cell 4
Insert new row
我希望它有所帮助。
答6:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
我建议
$('#myTable > tbody:first').append('......');
与
$('#myTable > tbody:last').append('......');
first 和 last 关键字作用于要开始的第一个或最后一个标签,而不是关闭的。因此,如果您不想更改嵌套表,而是将其添加到整个表中,那么这对嵌套表会更好。至少,这是我发现的。
答7:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
在我看来,最快和最清晰的方法是
//Try to get tbody first with jquery children. works faster!
var tbody = $('#myTable').children('tbody');
//Then if no tbody just select your table
var table = tbody.length ? tbody : $('#myTable');
//Add row
table.append('hello>');
这是演示Fiddle
我也可以推荐一个小功能来进行更多的 html 更改
//Compose template string
String.prototype.compose = (function (){
var re = /\{{(.+?)\}}/g;
return function (o){
return this.replace(re, function (_, k){
return typeof o[k] != 'undefined' ? o[k] : '';
});
}
}());
如果你使用我的弦乐作曲家,你可以这样做
var tbody = $('#myTable').children('tbody');
var table = tbody.length ? tbody : $('#myTable');
var row = ''+
'{{id}}'+
'{{name}}'+
'{{phone}}'+
'';
//Add row
table.append(row.compose({
'id': 3,
'name': 'Lee',
'phone': '123 456 789'
}));
这是演示Fiddle
如果您有多个 tbody,您可以获得多个插入
是的,您可以 :) 您可以尝试 $("SELECTOR").last() 来限制您的标签集合
答8:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
这可以使用 jQuery 的“last()”函数轻松完成。
$("#tableId").last().append("New row");
好主意,但我认为您希望将选择器更改为#tableId tr,因为现在您将在表格下方添加行。
答9:
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
我是这样解决的。
使用 jQuery
$('#tab').append($('')
.append($('').append("text1"))
.append($('').append("text2"))
.append($('').append("text3"))
.append($('').append("text4"))
)
片段
KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲tab').append((‘’) .append( ( ′ ′ ) . a p p e n d ( " t e x t 1 " ) ) . a p p e n d ( ('').append("text1")) .append( (′′).append("text1")).append((‘’).append (“text2”)) .append( ( ′ ′ ) . a p p e n d ( " t e x t 3 " ) ) . a p p e n d ( ('').append("text3")) .append( (′′).append("text3")).append((‘’).append(“text4”)) ) 名字 姓 年龄 城市 吉尔 史密斯 50 纽约
我现在可以在新行中成功添加动态数据,但是使用此方法后,我的自定义过滤器不起作用..您有什么解决方案吗?谢谢
我认为您需要调用某种更新功能。不得不说没有例子。
答10:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
当表格中没有任何行时,我正在使用这种方式,并且每一行都非常复杂。
样式.css:
...
#templateRow {
display:none;
}
...
xxx.html
...
...
...
$("#templateRow").clone().removeAttr("id").appendTo( $("#templateRow").parent() );
...
谢谢你。这是一个非常优雅的解决方案。我喜欢它如何将模板保持在网格内。它使代码更简单,更易于阅读和维护。再次感谢。
答11:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
对于此处发布的最佳解决方案,如果最后一行有嵌套表,则新行将添加到嵌套表而不是主表。一个快速的解决方案(考虑带有/不带有 tbody 的表格和带有嵌套表格的表格):
function add_new_row(table, rowcontent) {
if ($(table).length > 0) {
if ($(table + ' > tbody').length == 0) $(table).append('');
($(table + ' > tr').length > 0) ? $(table).children('tbody:last').children('tr:last').append(rowcontent): $(table).children('tbody:last').append(rowcontent);
}
}
使用示例:
add_new_row('#myTable','my new row');
原文链接:https://www.huntsbot.com/qa/6Lqd/add-table-row-in-jquery?lang=zh_CN&from=csdn
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!