2010-04-28 49 views
23

如何使用普通的JavaScript去除父元素和所有相應的節點?我沒有使用jQuery或任何其他庫。 換句話說,我有一個元素,當用戶點擊它時,我想要移除父元素(以及各個子節點)的父元素。如何使用純javascript去除父元素..!

<table id='table'> 
    <tr id='id'> 
     <td> 
      Mohit 
     </td> 
     <td> 
      23 
     </td> 
     <td > 
     <span onClick="edit(this)">Edit</span>/<span onClick="delete_row(this)">Delete</span> 
     </td> 
     <td style="display:none;"> 
      <span onClick="save(this)">Save</span> 
     </td> 
    </tr> 
</table>  

現在,

function delete_row(e) 
{ 
    e.parentNode.parentNode.removeChild(e.parentNode); 
} 

只會移除最後<td>

如何直接刪除<tr>>?

e.parentNode.parentNode.getAttribute('id') 

返回行的id ...

有沒有像remove()delete()任何功能?

回答

29

更改您的功能是這樣的:

function delete_row(e) 
{ 
    e.parentNode.parentNode.parentNode.removeChild(e.parentNode.parentNode); 
} 
11
node.parentNode.parentNode.removeChild(node.parentNode) 

編輯:您需要刪除父父,所以增加一個.parentNode

node.parentNode.parentNode.parentNode.removeChild(node.parentNode.parentNode) 
2

我知道這是一個有點太晚了,但其他人可能會覺得它有用。
剛剛寫了一個函數。

更改此:

onClick="delete_row(this)" 

要這樣:

onClick="removeParents(this, document.getElementById('id'))" 

function removeParents(e, root) { 
    root = root ? root : document.body; 
    var p = e.parentNode; 
    while(root != p){ 
     e = p; 
     p = e.parentNode; 
    } 
    root.removeChild(e); 
} 

http://jsfiddle.net/emg0xcre/

4

或爲那些誰喜歡一個班輪

<button onClick="this.parentNode.parentNode.removeChild(this.parentNode);">Delete me</button> 
0

簡單的功能與ES6做到這一點:

const removeImgWrap =() => { 
    const wrappedImgs = [...document.querySelectorAll('p img')]; 
    wrappedImgs.forEach(w => w.parentElement.style.marginBottom = 0); 
};