1

js

$(".deletable").live('click',function(){
      $(this).parent().effect('explode', 500, function(){
            $(this).parent().remove();
      })
});

html

<table>
    <tr>
        <td class='deletable'>hi</td>
    </tr>
</table>

<ul>
    <li>
        <span class=deletable>hi</span>
    </li>
</ul>

ケースがクリックtrされ、ケースtdがクリックされた場合に削除したい。lispan

何らかの理由でこれは機能せず、代わりにul/全体tableが削除されます。

なんでそうなの ?

4

4 に答える 4

5

何らかの理由でこれが機能せず、代わりに ul/table 全体が削除されます。

なんでそうなの ?

thisクリック イベント内の現在のコードでは、クリックされた要素を参照します。次に、要素の親にトラバースして、それ
を呼び出します。effect$(this).parent().effect...

効果呼び出し内では、親 ( )thisを参照していますが、親 ( )の親へのトラバースをli/tr呼び出すため、全体が削除されます。$(this).parent().remove();ul/tablelist/table

次のように、目的の親要素 ( )$(this).remove();を既に参照しているため、代わりにエフェクト コール内でのみ使用するようにコードを変更します。li/tr

$(".deletable").live('click',function(){
      $(this).parent().effect('explode', 500, function(){
            $(this).remove();
      })
});
于 2012-12-27T15:05:31.490 に答える
4

試す

$(".deletable").live('click',function(){
    $(this).parent().effect('explode', 500, function(){
        // $(this) is still your parent
        $(this).remove();
    })
});
于 2012-12-27T15:01:45.913 に答える
0

これを使って

$(this).parents("li:first").remove();
于 2012-12-27T14:59:48.473 に答える
0

.parent にもセレクターを使用できます。http://api.jquery.com/parent/

$(this).parent("tr").remove();

デバッグツールを見ていて、table/ulに子要素が1つしかない場合、table/ul全体が削除されることをどのように理解しますか?

table/ul に複数の子がある場合、これを試すことができますか?

于 2012-12-27T14:58:28.533 に答える