1

我正在尝试删除字符串中的某个表行。例如,我在字符串中有下面的代码。让我们调用存储下面字符串的变量temp

<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>

我有几个按钮,其 id 对应于上面的行数。如果我单击第一个按钮,它对应的 id 为 1,第二个按钮的 id 为 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();

}

temp如何根据我单击的 id(button)在我的变量中删除该字符串的一部分?如果我选择按钮 1,我想删除第一个表格行。按钮二,第二个表格行等。我知道我需要替换字符串,但是如何删除字符串中的某些实例?

4

5 回答 5

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中尝试一下。

于 2013-06-03T17:14:13.177 回答
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 方式 你也可以用 jQuery 来做。看小提琴

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

于 2013-06-03T17:08:23.193 回答
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
});
于 2013-06-03T17:03:34.550 回答
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>

于 2013-06-03T21:49:47.767 回答
-1

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

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

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

于 2013-06-03T16:52:14.097 回答