3

我有一个表定义为

<table>
  <tr>
    <td>
       <input type='text' />
    </td>
    <td>
      <button id ='first'>Button</button>
    </td>
    <td>
      <input type='text' />
   </td>
 </tr>

$("#first").live('click',function(){
    $(this).prev().remove();
    $(this).remove();
});

如何删除td. 但我不想删除td

4

5 回答 5

8

如果要删除之前 TD 的完整内容(而不是特定的 INPUT 元素),这将起作用:

$(document).on("click", "#first", function() {
    $(this).closest("td").prev().empty();
});
于 2013-04-15T12:19:28.550 回答
3

http://jsfiddle.net/sfHBn/1/

$(document).on("click", "#first", function() {
    $(this).closest("td").prev().html("");
});

这将删除之前td标签中的所有内容。

于 2013-04-15T12:20:09.943 回答
2

您应该向上 DOM 树直到 parent <td>,然后获取 previous <td>,在<input>里面找到并删除它。您应该使用on()with 事件委托而不是 deprecated live()

$(document).on("click", "#first", function() {
    $(this).closest("td").prev().find("input").remove();
});

注意,document您可以使用.#first

于 2013-04-15T12:14:34.857 回答
0

这是要实现的一个班轮。

     $(this).closest("td").prev().remove();
于 2013-04-15T12:16:51.247 回答
0

我建议您.on()改用它,因为.live()它现在已从 jQuery 版本 1.9+ 中删除:

$(document).on('click', "#first", function(){
   $(this).closest('td').prev().children().remove();
});

单击#first按钮并获取.closest() <td>并获取.prev()元素,它是 a <td>,然后是.remove()它的.children()

于 2013-04-15T12:21:36.487 回答