循环DIV不保留以前的表结构


Looped DIV not keeping table structure from previous

我有一个表,其中包含许多订购详细信息,然而,当我想从管理页面添加产品时,即使所有原始的表结构都很好,一旦jQuery回显了一个额外的div来给我更多的表,任何人都能在jQuery中找到一种方法,只向现有表添加几行吗?例如。。。

<?php echo('
<tr>
        <th colspan="2"><label>Item '.$mCount.'</label></th>
    </tr>
    <tr>
    <td colspan="1"><label for="itemDetailvar1'.$mCount.'">Track var1:</label></td> 
    <td colspan="1"><input type="text" size="25" name="itemDetails['.$mCount.'][var1]" value="" id="itemDetailvar1'.$mCount.'" " /></td>
    </tr>
<tr>
    <th colspan="2"><div id="itemPlacer"></div><a href="#" onclick="addNewItem(); return false;">Add Another Music Item</a>
    </td>
    </tr>
');
$mCount++;
?>
        <script type="text/javascript">
            var currCount = <?php echo($mCount); ?>;
            function addNewItem(){
jQuery("#itemPlacer").append('<tr><th colspan="2"><label>Track '+currCount+'</label></th></tr><tr><td colspan="1"><label for="itemDetailvar1'+currCount+'">Track var1:</label></td></tr>');             
                currCount++;
                return false;
            }
        </script>

我只需要知道用jQuery添加一些基本表函数的方法,这样如果有人能给我展示一种方法,让我看到一个按钮"添加项目",然后点击,它会添加一些表格行,这将是完美的!

我猜"itemPlacer"是表的id。试试这个方法:

function addNewItem(){
    jQuery("#itemPlacer tbody").append('<tr><th colspan="2"><label>Track '+currCount+'</label></th></tr><tr><td colspan="1"><label for="itemDetailvar1'+currCount+'">Track var1:</label></td></tr>');             
     currCount++;
    return false;
}

即使您没有在表中创建<tbody>元素,浏览器通常也会"更正它"并为您创建一个。

编辑:要在当前单击的行之后立即添加它们:

function addNewItem(element){
    jQuery(element.parentNode.parentNode).after('<tr><th colspan="2"><label>Track '+currCount+'</label></th></tr><tr><td colspan="1"><label for="itemDetailvar1'+currCount+'">Track var1:</label></td></tr>');             
     currCount++;
    return false;
}

您必须通过以下方式将"元素"参数传递给您的函数:

<a href="#" onclick="addNewItem(this); return false;">Add Another Music Item</a>

请注意,项目将在单击的行之后立即添加。。。如果您添加了1行以上,它将添加在您添加的最后一行之前(因此就在单击的行之后)。我不知道这是否是你想要的行为。。。