2013-07-25 51 views
2

我有一个表细胞按钮,像这样:jQuery的 - 删除元素的父行

<table> 
    <tr> 
     <td>information</td> 
     <td> 
      <button onclick="function(id, this)">Text</button> 
     </td> 
    </tr> 
</table> 

按下按钮时调用的函数做一些Ajax的东西,如果它是成功的,整个排在那里该按钮应该从DOM中删除。 (这是一个删除功能;)

但是,我似乎无法得到jQuery删除正确的行。 我用$('#id').parent().parent().remove();,因为我认为它会去:按钮 - >单元格 - >行,但它只是删除表的第一行?!我失去了哪里? :(

+0

您的按钮没有ID,所以jQuery无法找到它。在函数中使用'$(this)'而不是$('#id')'。而'功能'对于一个功能来说也是一个糟糕的名字。 – putvande

+0

谢谢!这就是诀窍:)。我的功能实际上被称为“deleteShift”,并且表格看起来不像那样 - 我只是简化它:) – Fireworm

+0

好吧,我找出了我的错误。你们说“这个”更好,但是,按钮看起来像这样:'',所以你看它有一个ID,但我犯了一个错误,导致所有的按钮有相同的,从而导致jQuery删除第一个它发现。 – Fireworm

回答

9

http://jsfiddle.net/ZnX5J/

<table> 
    <tr> 
     <td>information</td> 
     <td> 
      <button onclick="removeRow(this)">Text</button> 
     </td> 
    </tr> 
    <tr> 
     <td>blah</td> 
     <td> 
      <button onclick="removeRow(this)">Text</button> 
     </td> 
    </tr> 
</table> 

的JavaScript

removeRow = function(el) { 
    $(el).parents("tr").remove()  
} 
3

.closest()能做到这一点很容易 -

$(this).closest('tr').remove(); 

您可以删除内嵌的onClick和处理click这样的 -

$('button').on('click',function(){ 
    $(this).closest('tr').remove(); 
}); 

演示------>http://jsfiddle.net/2nJYe/

0

当你这样做的权利,但没有ID,如果你这样做,你希望它会工作,

$(this).parent().parent().remove(); 

但在这种情况下建议使用.closest()。

$(this).closest("tr").remove();