将行添加到表的开头 - JavaScript - jQuery

问题描述 投票:4回答:6

jQuery中添加额外行作为第一行的最佳方法是什么?

我有一张这样的桌子

<table id="mytable" cellpadding="0" cellspacing="0">
<tr>
<td>col1</td>
<td>col2</td>
<td>col3</td>
</tr>
<tr>
<td>col1</td>
<td>col2</td>
<td>col3</td>
</tr>
</table>
<button id="but">mybutton</button>

我想在给定默认值的情况下将一行添加为表格开头的第一行。如何使用JavaScript和jQuery实现这一目标?小提琴会有所帮助。

javascript jquery
6个回答
8
投票

http://jsfiddle.net/32Ymw/

$("#but").click(function(){
   row = $("<tr></tr>");
   col1 = $("<td>col1</td>");
   col2 = $("<td>col2</td>");
   col3 = $("<td>col3</td>");
   row.append(col1,col2,col3).prependTo("#mytable");   
});​

15
投票

你可以在jQuery中使用.prepend函数。

$('#mytable').prepend($('<tr>'));

http://api.jquery.com/prepend/


6
投票

使用.on('click',...);prependhttp://jsfiddle.net/k8hCa/

jQuery的:

$('#but').on('click', function(e){
    $('#mytable').prepend('<tr><td>newcol1</td><td>newcol2</td><td>newcol3</td></tr>');
});

1
投票

接受的答案是好的,但绝对值得注意的是tbody是你应该追加/前置的节点,并且使用appendTo和prependTo方法是最好的解决方案,因为当有任意数量的行时它将起作用,包括零。

请参阅此答案以获得一个很好的例子:https://stackoverflow.com/a/1353736/2812428

另请注意,即使没有行,最好自己指定一个tbody,以避免在没有向表添加行的情况下DOM中自动没有tbody的问题。


0
投票

以下是我正在做的事情

模板

<script type="text/template" id="cardTemplate">
    <TR class=Normal>
        <TD>
                {0}
        </TD>
        <TD>
                {1}
        </TD>
        <TD>
                {2}
        </TD>

     </TR>
</script>

jQuery的

       String.prototype.format = function() {
                                 var args = arguments;
                                 return this.replace(/{(\d+)}/g, function(match, number) { 
                                        return typeof args[number] != 'undefined'
                                               ? args[number]
                                               : match
                                              ;
                                          });
                                  };

                var cardTemplate = $("#cardTemplate").html();
                //Note: format is a custom method added for "String"
                var template = cardTemplate.format("a", "b","c");

                //$('#tblScanResult tbody > tr:first').before(template);
                $('#tblScanResult tbody').prepend(template);

0
投票

jQuery .prepend()方法应该可行

$('#mytable').prepend($('<tr>'));
© www.soinside.com 2019 - 2024. All rights reserved.