我正在尝试删除字符串中的某个表行。例如,我在下面的代码中包含一个字符串。让我们调用存储temp
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
我有几个按钮,其id与上面的行数相对应。如果我单击第一个按钮,它的相应ID为1,第二个按钮有2,等等。
我得到的是,如果我点击这些删除按钮,我想根据我点击的id(按钮)删除上面的相应表格行。
到目前为止,这是我的代码。
$(".delete").click(function() {
var id = $(this).attr("id");
var temp = $("#detailsBox").val();
for (i=1; i!=id; i++) {
if (i=1) {
}
}
$(this).closest('tr').remove();
}
如何根据我点击的id(按钮)删除变量temp
中该字符串的一部分?如果我选择按钮1,我想删除第一个表格行。按钮2,第二个表行等我知道我需要替换字符串,但是如何删除字符串中的某些实例呢?
答案 0 :(得分:1)
您正在尝试使用jQuery,就好像这些元素在DOM中......而它们不是。它们只是一个字符串。所以你可以这样做:
var arr = yourString.split("<tr>");
$(".delete").click(function() {
var id = $(this).attr("id");
arr = arr.splice(parceInt(id, 10)-1, 1);
}
现在你的数组里面有正确的TR。您所要做的就是将它们再次转换为字符串:
var htmlString;
for (var i=0; i<arr.length; i++) {
htmlString += arr[i];
}
更新jQuery WAY 你也可以用jQuery做到这一点。看看小提琴
答案 1 :(得分:1)
解析HTML为dangerous。因此,我建议您将字符串转换为DOM,然后在DOM树上进行操作。
这是一个简单的jQuery解决方案:
var row = 1; // the row I want to remove
var temp = $("#myTextarea").value(); // get HTML
var table = $("<tbody>" + temp + "<tbody>"); // creates DOM nodes from HTML
table.find("tr").eq(row - 1).remove();
var tempWithoutRow = table[0].innerHTML;
在JSFiddle中尝试自己。
答案 2 :(得分:0)
您可以选择所有表格行,然后向下筛选到您想要的那些:
$(".delete").click(function() {
var id = $(this).attr("id");
$("#my-table").find("tr").eq(id + 1).remove();//since your IDs are not zero-indexed and .eq() is
});
.eq()
的文档:http://api.jquery.com/eq 答案 3 :(得分:0)
$(".delete").click(function() {
var id = $(this).attr("id");
var temp = $("#detailsBox").val();
for (i=1; i!=id; i++) {
if (i=1) {
}
}
$(this).parentNode.remove();
}
如果.delete在td上
否则,如果你有<td><button class="delete"></button></td>
然后它是$(this).parentNode.parentNode.remove();
如果按钮位于<tr>
答案 4 :(得分:-1)
简单的解决方案是为行提供有意义的ID并使用以下代码:
$(".delete").click(function() {
$('#row' + $(this).id).remove();
}
如果你真的想在字符串中计算无名的TR元素,你可以将它们分成一个split("<tr>")
的数组