【问题标题】:Add rows to jQuery table after the the present row在当前行之后向 jQuery 表中添加行
【发布时间】:2010-07-27 20:34:28
【问题描述】:

我想知道如何在数据表中的特定行之后添加行。 为此,我正在使用 jQuery 数据表插件。

我可以通过表格行索引。我需要将该行插入到我的 javascript 函数中,如下所示:

function addNewContact(rCount){ .. }

而我的 HTML 代码是:
table id="exampleTbl"
tr
td..../td (data of first column)
td..../td (data of second column)
...
td
input type="button" id="addNewContact<%=rCount %>" name="addNewContact_Details" value="+" onclick="javascript:addNewContact(<%=rCount %>);"
/td
/tr
/table

对于新添加的行,我希望前 3 列为空白,其他列 (5) 包含文本框。

【问题讨论】:

  • 您无需在代码周围添加code 标签,只需将其缩进四个空格即可。
  • 哦,好吧,刚接触堆栈溢出,我不知道。你有我的问题的解决方案吗?

标签: jquery jquery-plugins


【解决方案1】:

假设您的表格如下所示:

<table id="exampleTbl">  
    <tr>
        <td>....</td>
        <td>....</td>
        ...  
        <td>
           <button type="button" class="addRow" />+</button>
       </td>  
    </tr>
</table>

您可以将点击处理程序添加到添加一行的按钮,如下所示:

$(function() {
    // HTML template of a row
    var html = '<tr><td></td>...<td><button type="button" class="addRow">+</button></td></tr>';

    $('#exampleTbl').delegate('button.addRow', 'click', function() {
        var row = $(this).closest('tr'); // get the parent row of the clicked button
        $(html).insertAfter(row); // insert content
    });
});

一些注意事项:

  • 由于$(function(){...}),一旦加载DOM,代码就会被执行。
  • click 事件被表捕获。这样可以确保新插入的行的按钮也能正常工作。
  • 不要混合样式。如果您使用 jQuery,请不要通过 HTML 中的 onclick 属性附加点击处理程序。它使您的代码难以维护,并且您可以更灵活地使用 jQuery 方式进行维护。

希望对您有所帮助,如果您对此有任何疑问,请在此帖子下发表评论。

【讨论】:

  • 嗨菲利克斯,感谢您的回复。我尝试了您发送给我的相同代码,但效果不佳。我尝试在函数内部添加一些警报语句来执行 onclick 事件,如下所示: $(function() { // HTML of new row var html = ' td> 1 2 '; $('#contactInfo').delegate("button.addRow", "click" , function() { alert("button clicked"); var row = $(this).closest(tr); // 获取点击按钮的父行 $(html).insertAfter(row); // 添加内容 }) ; });但这并不完全奏效。
  • @Pritish:我的代码中有一些语法和引用错误,对不起。我更新了它,你也可以在这里看到一个活生生的例子:jsfiddle.net/dxPzF
  • 嗨,菲利克斯,感谢您的快速回复。我想知道的一件事是,如果我的表格在
    标记内(例如带有 id exampleDiv),上面的 javascript 是否仍然有效?我可以看到您的代码运行良好,但是当我尝试相同的操作时,并没有完全触发按钮上的单击事件的 function()。
  • 是的,它应该可以工作(当然,如果你使用#exampleDiv)。事件只是冒泡到元素,处理程序被附加并在那里处理。更多信息可以找到here。 jQuery 只是利用了这一点。如果您通过delegate() 将事件处理程序附加到元素,它只会侦听冒泡的事件并检查原始目标。
猜你喜欢
相关资源
最近更新 更多
热门标签