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

(特定の INPUT 要素ではなく) 以前の TD の完全な内容を削除する場合は、次のようにします。

$(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

parent まで DOM ツリーを上ってから<td>、 previous を取得し、内部を<td>見つけ<input>て削除する必要があります。on()deprecated の代わりにイベント委譲を使用する必要がありますlive()

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

document代わりに、の他の静的親要素を使用できることに注意してください#first

于 2013-04-15T12:14:34.857 に答える
0

これが達成するための1つのライナーです。

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

は jQuery バージョン 1.9 以降から削除された.on()ため、代わりに使用することをお勧めします。.live()

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

#firstボタンをクリックしてに移動し、とそのの要素を.closest() <td>取得します。.prev()<td>.remove().children()

于 2013-04-15T12:21:36.487 に答える