2017-10-10 5 views
0

jQueryでやっていたことをプレーンJavaScriptで学ぶことを試みています。普通のjavascriptでクリックすると親要素を削除します

私は解決するためにインターネット上で見つけた例があり、本当に苦労しました。

button.removeをクリックして、親div.singleを削除しようとしています。

ここにコードがあります。

var btn = document.getElementsByClassName('remove') 
 
    
 
for (var i = 0; i < btn.length; i++) { 
 
    btn[i].addEventListener('click',function (e) {  
 
     e.parentNode.parentNode.removeChild(e.parentNode); 
 
    } , false); 
 
}
<div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X1</button> 
 
    </div> 
 
    <div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X2</button> 
 
    </div> 
 
    <div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X3</button> 
 
    </div> 
 
    <div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X4</button> 
 
    </div>

私はエラーe.parentNode is undefinedを取得しています。

私は後に同じことをするjQueryコードです。

$(document).ready(function() { 
    $(document).on('click', '.remove', function() {  
    $(this).parent('.single').remove() 
    }) 
}) 

ありがとうございました。

+1

のサポートを持っているあなたは '電子を必要とします.target.parentNode'。 'e'オブジェクトはノードではなくイベントオブジェクトです。ノードを参照するのは 'target'プロパティです。 – trincot

+1

メソッドの中で 'e'を' this'に置き換えてください。 – gurvinder372

+0

両方のソリューションが動作します、ありがとうございます。 – iamwtk

答えて

2

あなたは

注(currentTarget/target)イベント・オブジェクトから要素の参照を取得する必要があります:すべての近代的なブラウザのはNode.remove()

var btn = document.getElementsByClassName('remove') 
 

 
for (var i = 0; i < btn.length; i++) { 
 
    btn[i].addEventListener('click', function(e) { 
 
    e.currentTarget.parentNode.remove(); 
 
    //this.closest('.single').remove() // in modern browsers in complex dom structure 
 
    //this.parentNode.remove(); //this refers to the current target element 
 
    //e.target.parentNode.parentNode.removeChild(e.target.parentNode); 
 
    }, false); 
 
}
<div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X1</button> 
 
</div> 
 
<div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X2</button> 
 
</div> 
 
<div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X3</button> 
 
</div> 
 
<div class="single"> 
 
    <img src="http://via.placeholder.com/150x150"> 
 
    <button type="button" class="remove">X4</button> 
 
</div>

+0

魅力として動作します、ありがとうございます! – iamwtk

関連する問題