2011-08-25 70 views
3

我需要用純javascript代替這個jQuery函數。用Javascript取代jQuery函數

$('#myTable span.hide').click(function() { 
    $(this).closest("tr").remove(); 
    return false; 
}); 

我試圖用它替換它,但它在IE中不起作用。

function rem(id) { 
    id.parentNode.parentNode.innerHTML = "<td></td>"; 
} 

這裏的表的樣子:

<tbody id="thebody"> 
<tr> 
    <td> 
     <span onclick="rem(this);" class="hide"></span> 
    </td> 
    //More td's here 
</tr> 
</tbody> 

回答

7
function rem(id) { // id may be ambiguous here, because it's the element, not an ID 
    var elem = id; // current elem 

    while(elem.nodeName !== "TR") { // move up to tr as long as it isn't tr yet 
     elem = elem.parentNode; // if not tr yet, set elem to parent node 
    } 

    elem.parentNode.removeChild(elem); // remove tr from parent node 
} 

請注意,你的HTML應該包括<table> - 原始<tbody>是無效的。如果你想刪除的最近<tr>

function rem(el) { 
    el.parentNode.removeChild(el); 
} 

,那麼你需要的東西,如::

0
function rem(id) { 
    id.parentNode.innerHTML = ""; 
} 
+0

這將刪除'td'不'tr'元素,這是jQuery版本的功能。 – Shef

+0

你的代碼用空白TD代替TD,我的代碼只是清除TD內容。有什麼不同?你想清除td屬性? – hungryMind

+0

我認爲@Shef指的是他的jQuery函數,而不是他嘗試用純JavaScript重新創建函數。 – Stefan

3

要刪除<span>元素本身,這樣做

function rem(el) { 
    while(el.nodeName != "TR") { 
     el = el.parentNode; 
    } 
    el.parentNode.removeChild(el); 
}