12

その特定のクラスがクリックされたlist_product場合、ブロック全体を削除しようとしています。delete私はjqueryを初めて使用し、まだ学習中です。

<div class='list_product'>
    <div class='row'>
        <div class='delete'>x</div>
        <div class='title'>Standing Fan</div>
     </div>
</div>
<div class='list_product'>
    <div class='row'>
        <div class='delete'>x</div>
        <div class='title'>Standing Fan 2</div>
     </div>
</div>
<div class='list_product'>
    <div class='row'>
        <div class='delete'>x</div>
        <div class='title'>Standing Fan 3</div>
     </div>
</div>
<div class='list_product'>
    <div class='row'>
        <div class='delete'>x</div>
        <div class='title'>Standing Fan 4</div>
     </div>
</div>

Jクエリ:

$('.delete').click(function() {
   $(this).find('.list_product').remove();
});

動かない。理由と修正方法を教えてください。ありがとう

4

3 に答える 3

25

するだけです$(this).closest('.list_product').remove()
API ref: http://api.jquery.com/closest/
findは、現在の要素の子を検索します。この場合、.delete要素には子がありません。逆にclosest、DOM を調べて、 class を持つ最初の祖先を探しますlist_product。お役に立てれば。

于 2012-08-14T13:21:21.037 に答える
5

これを試して:

$(document).on('click', '.delete', function(e) {
   e.preventDefault();
   $(this).closest('.list_product').remove();
   return false;
});
于 2012-08-14T13:26:14.813 に答える
2

親要素でイベント委任を使用するか、 Closestメソッドを使用できます

Closest は非常に使いやすいです:

var id = $("button").closest("div").attr("id");
于 2012-08-14T13:25:03.563 に答える