我有一个表格,其中我点击按钮时使用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事件,以便如果我单击删除按钮,相应的行将被删除?
答案 0 :(得分:4)
首先在动态按钮上放置一个公共类
与<input type='button' value='Remove' class='remove' />
类似,如果您想要ID,请在输入按钮上输入唯一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();
});
答案 1 :(得分:2)
有两个选项,您可以在表格或单个按钮(行)上注册单击。如果你有大量的行,并且因此按钮可能有必要在表上注册点击以减少系统中的监听器。
如果要以编程方式在任何新创建的项目上注册事件,可以执行以下操作:
var $myItem = $('<input type="button"/>');
$myItem.on('click', function(e) {});
答案 2 :(得分:1)
使用.on()
为点击附加事件处理程序。
$("#dynamicButton").on("click", function(e) { });
答案 3 :(得分:1)
$(document).on("click", "#dynamicButton", function(e) { });
答案 4 :(得分:0)
如果您为每一行提供一个包含计数器变量的ID,那么每个ID都基于该点的计数,那么您可以轻松删除所单击行的ID。
答案 5 :(得分: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>';
和删除(数据是隐藏字段):
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但是“删除”代码会给出一个想法
答案 6 :(得分:-1)
$('#btnRemove').live ('click', function () {
$(this).closest('tr').remove();
});