2010-08-27 152 views
3

表:添加新行的每一行后

<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”身份证,然后 行属于“flight_xx”标识之后,创建一个新的行。

这是可能使用jQuery?

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

回答

3

尝试:

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

这将包含具有与flight启动IDS跨度行后添加新行。

+0

感谢所有后添加行!很快!节省我的一天。 – Guus 2010-08-27 11:24:28

+0

@Guus:欢迎:) – Sarfraz 2010-08-27 13:43:20

2

标准的jQuery会是什么样子:

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

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

这会在'':)内追加一个'' :) – 2010-08-27 10:52:13

+0

非常感谢..! – Guus 2010-08-27 11:31:51

2

你可以这样说:

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

这需要的flgiht数,将其转换成flight_xx ID,发现该元素,上升到<tr>它在(通过.closest(),并插入新行.after()那一个。

如果你有t他选择在行上添加ID而不是<span>,这样做只需删除.closest()呼叫。

+0

非常感谢..! – Guus 2010-08-27 11:32:29

1

你应该可以使用自定义装饰器来做到这一点。使用startRow(),你可以在你选择的任何一行之前添加一些东西。喜欢的东西:

public String startRow() { 
    ... 

    Item rowItem = (Item) getCurrentRowObject(); 

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

    ... 

    return returnString; 

希望这有助于

1

您可以用自定义decorater做到这一点,并覆盖finishRow method.this代码将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; 
         }