首页 前端知识 在jQuery中添加表格行

在jQuery中添加表格行

2024-07-01 23:07:36 前端知识 前端哥 240 728 我要收藏

问:

在 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开始!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/13777.html
标签
评论
发布的文章

读魏书生的心得体会

2024-07-03 14:07:10

jQuery 选择器

2024-05-12 00:05:34

Vue中public/assets目录区别

2024-07-02 23:07:29

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!