2017-10-10 84 views
0

我想学习的东西我用jQuery做在普通的JavaScript做。删除父元素点击使用普通的javascript

我有我在互联网上找到的例子来解决这个例子,它真的让我很难。

我试图删除父母div.single点击button.remove

这是代码;

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

在方法内用'this'替换'e'。 – 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