根据所选id删除字符串中的特定文本行

Remove particular row of text in string based on id selected

本文关键字:文本 字符串 id 删除      更新时间:2023-09-26

我正在尝试删除字符串中的某个表行。例如,我将下面的代码放在一个字符串中。让我们调用存储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,我想删除表的第一行。按钮二、第二个表行等。我知道我需要替换字符串,但如何删除字符串中的某些实例?

解析HTML是危险的。因此,我建议您将字符串转换为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。

您正在尝试使用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方式你也可以用jQuery来实现。看看小提琴

http://jsfiddle.net/J6HJ2/2/

您可以选择所有表行,然后向下筛选到您想要的行:

$(".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
$(".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> 内部,则无需id

简单的解决方案是为行提供有意义的ID,并使用以下代码:

$(".delete").click(function() {
  $('#row' + $(this).id).remove();
}

如果你真的想计算字符串中的无名TR元素,你可以用split("<tr>") 将它们分割成一个数组