2017-03-22 18 views
0

私は、クリックイベントで要素を要素に追加する関数を持っています。次に、以前に追加された要素の1つがクリックされたときにそれらの要素を削除する必要がある別の要素があります。jQuery、削除は子要素を削除しない - 親だけ

.closeBigPicをクリックすると、その要素が期待通りに削除されますが、.bigPicWrapper divが削除され、.bigPic要素が残っています。

$(document).on('click', '.user-profile .avatar_section', function() { 
    var thumbUrl = $(this).find('.avatar_profile').attr('src'); 

    var origUrl = thumbUrl.replace('thumb', 'medium'); 
    console.log(origUrl); 

    $('body').append('<div class="closeBigPic"></div><div class="bigPicWrapper"><img class="bigPic" src="' + origUrl + '" /></div>') 
}); 


$(document).on('click', '.closeBigPic', function() { 
    $(this, '.bigPicWrapper').remove(); 
}); 

ないことが必要であろう理由を確認してくださいが、ここでSCSSは、念のためです:

.user-profile { 
    .avatar_section { 
     cursor: pointer; 
    } 
} 

.bigPicWrapper { 
    position: absolute; 
    z-index: 9010; 
    top: 50%; 
    left: 50%; 
    -webkit-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 

    img { 
     max-width: 100%; 
     border-radius: 100%; 
     border: solid 5px #fff; 
    } 
} 

.remove()は、同様に子要素を削除しないでください。

UPDATE:私は第2のクリックイベントを変更すると

$(document).on('click', '.closeBigPic', function() { 
    $(this).remove(); 
    $('.bigPicWrapper').remove(); 
}); 

それが期待どおりに動作します。そこには何が起こっているのですか?私はそれはこれがあなたのコンテキストとして.bigPicWrapperを使用するように言っているthis

答えて

1
$(document).on('click', '.closeBigPic', function() { 
    $(this, '.bigPicWrapper').remove(); 
}); 

と結合されているとは何かを持っている想像してみてください。何かのようでした

$('.foo, .bar').remove(); 

は単にCSSセレクタとして機能しています。私は次のことを考えていない

+0

はい、あなたは絶対に正しいです!私は自分がしていたことに気付かなかった。これは非常に面白いです。ありがとう! – user3006927

0

は、あなたはそれがないと思う何を行いますdocumentationから

$(this, '.bigPicWrapper') 

jQuery(selector [, context ]) 

それは'.bigPicWrapper'ようには見えませんが、有効なコンテキストです。

関連する問題