在每行之后在表中添加新行

时间:2010-08-27 10:44:24

标签: jquery displaytag

表:

<table id='t1' style='border:1px solid #000000'>
    <tr>
      <td><span id='flight_1'>1</span></td><td>1</td>
    </tr>   

    <tr>
      <td><span id='flight_2'>2</span></td><td>2</td>
    </tr>  

    <tr>
      <td><span id='flight_99'>99</span></td><td>99</td>
    </tr> 
</table>

我想搜索每个'flight_xx'id,然后在之后创建一个新行 属于'flight_xx'id的行。

这可以使用jQuery吗?

该表是使用DisplayTag库创建的,我无法弄清楚如何操作。

5 个答案:

答案 0 :(得分:3)

尝试:

$('span[id^="flight"]').closest('tr').after('<tr>This is a new tr</tr>');

这将在包含以flight开头的ID的跨度的行之后添加新行。

答案 1 :(得分:2)

标准jQuery看起来像:

var search  = 99,
    new_row = '<tr><td></td></tr>';

$('#flight_' + search).closest('tr').after(new_row);

答案 2 :(得分:2)

你可以这样做:

$("#flight_" + flightNumber).closest('tr')
                            .after('<tr><td><New Cell!</td><td></td></tr>');

这会获取flgiht数字,将其转换为flight_xx ID,找到该元素,然后前往<tr>(通过.closest(),并插入新行{{ 3}}那一个。

如果您可以选择在行而不是<span>添加ID,请执行此操作,然后移除.after()来电。

答案 3 :(得分:1)

您应该能够使用自定义装饰器执行此操作。使用startRow(),您可以在选择任何行之前添加内容。类似的东西:

    public String startRow() {
    ...

    Item rowItem = (Item) getCurrentRowObject();

    if (rowItem has some value) {
        returnString = "<tr><td>some text here</td></tr>";
    }

    ...

    return returnString;

希望这有帮助

答案 4 :(得分:1)

您可以使用自定义decorater执行此操作并覆盖finishRow方法。此代码将在displayTag表的每一行之后添加一行

    public  String finishRow()
                         {
                     String  returnString=null; 
                     ActorData rowItem = (ActorData) getCurrentRowObject();
                     if (rowItem.getAnyProperty()!=null )
                        {
                     returnString = "<tr><td>some text here</td><td colspan='2s'>avi</td>"
                    + "</tr>";
                         }
                     return returnString;
                         }