1

我有一个表格,其中我在单击按钮时使用 javascript 添加行。这是我的代码:

$("#addToDisplay").click(function (event) {
    $("#tblProducts").removeClass("hide");
    var counter = 1;
    event.preventDefault();
    counter++;
    var newRow = "<tr><td>" + $("#txtProducts").val() + "</td><td>" + ("#txtQty").val()  "</td><td><input type='button' value='Remove' id='btnRemove' /></td></tr>";
    $("#tblProducts").append(newRow);
});

我的问题是因为我为每行添加了删除按钮,因此将其包含在变量 newRow 中,我如何为其添加一个 onClick 事件,以便如果我单击删除按钮,相应的行将被删除?

4

7 回答 7

4

首先在您的动态按钮上放置一个公共类

如果您想要那里的 id,喜欢<input type='button' value='Remove' class='remove' />并为您的输入按钮提供一个唯一的 id。您可以使用您在代码中使用的计数器变量来制作唯一的 id。

$("#addToDisplay").click(function (event) {
    $("#tblProducts").removeClass("hide");
    var counter = 1;
    event.preventDefault();
    counter++;
    var newRow = "<tr><td>" + $("#txtProducts").val() + "</td><td>" + $("#txtQty").val() + "</td><td><input type='button' value='Remove' id='btnRemove"+counter+"' class='remove' /></td></tr>";
    $("#tblProducts").append(newRow);
});

并添加以下代码,它将删除删除按钮的父行。

 $("#tblProducts").on('click', '.remove', function(){
       $(this).closest('tr').remove();
 })

或者,如果您正在生成动态 id,则可以将其更改为使用 id,例如

$("#tblProducts").on('click', '[id^=btnRemove]', function(){
     $(this).closest('tr').remove(); 
});
于 2012-11-07T10:18:58.973 回答
2

有两个选项,您可以单击表格或单个按钮(行)。如果您有大量的行,并且因此有大量按钮,那么注册对表的点击以减少系统中的侦听器可能是有意义的。

如果您想以编程方式在任何新创建的项目上注册事件,您可以执行以下操作:

var $myItem = $('<input type="button"/>');
$myItem.on('click', function(e) {});
于 2012-11-07T10:23:50.330 回答
1

用于.on()为单击附加事件处理程序。

$("#dynamicButton").on("click", function(e) { });
于 2012-11-07T10:15:36.723 回答
1
$(document).on("click", "#dynamicButton", function(e) { });
于 2012-11-07T10:19:38.593 回答
0

如果您为每一行提供一个包含计数器变量的 ID,以便每个 ID 都基于当时的计数,那么您可以通过单击的行的 ID 轻松删除。

于 2012-11-07T10:20:25.610 回答
0

我使用以下代码进行添加:

var tbl= document.getElementById('tgtbl'); var tblrow = tbl.insertRow(tbl.rows.length);
var cell1 = tblrow.insertCell(0); cell1.innerText = tname; cell1.textContent = tname;
var cell2 = tblrow.insertCell(1); cell2.innerText = tvalue; cell2.textContent = tvalue;
var cell3 = tblrow.insertCell(2); cell3.innerHTML = '<a href="#" onclick="removerow(' + (tbl.rows.length - 1) + ')">Remove</a>';

和删除(tdata 是隐藏字段):

    var tbl = document.getElementById('tgtbl');
var tname = tbl.rows.item(rowindex).childNodes.item(0).innerText;
var idx = tdata.value.indexOf(tname.toLowerCase());
if (idx != -1) { tbl.deleteRow(rowindex);
  var tgd = tdata.value; tdata.value = tgd.substring(0, idx); tgd = tgd.substring(idx);
  if (tgd.indexOf(';') != -1) { tdata.value = tdata.value + tgd.substring(tgd.indexOf(';') + 1); }
for (i = 1; i < tbl.rows.length; i++) {
    tbl.rows.item(i).childNodes.item(2).innerHTML = '<a href="#" onclick="removerow(' + i + ')">Remove</a>'; }
}

我知道我没有使用过 jquery,但“删除”代码会给出一个想法

于 2012-11-07T10:22:46.530 回答
-1
 $('#btnRemove').live ('click', function () {
       $(this).closest('tr').remove();
 });
于 2012-11-07T10:22:43.517 回答