使用javascript / jquery删除表行

这不起作用。 Firebug并没有抛出任何错误。

HTML:

BookADelete
BookBDelete
BookCDelete
BookDDelete

使用Javascript:

 function deleteRow(ref) { $(ref).parent().parent().remove(); } 

如果可能,我想使用内联JavaScript的解决方案

首先,内联JavaScript( href="javascript:x"onclick="x" )通常很糟糕。 使用内联JavaScript,您将无法访问事件对象,并且您无法确定this引用的是什么。

jQuery(以及几乎所有其他JavaScript库/框架)都内置了事件处理。 因此,使用事件处理程序,您的代码看起来像这样:

 $('a.red').click(function(e) { e.preventDefault(); // don't follow the link $(this).closest('tr').remove(); // credits goes to MrKurt for use of closest() }); 

这是一个演示: http : //jsbin.com/okaxu

试试这个:

 // Bind all the td element a click event $('table td.deleteRow').click(function(){ $(this).parent().remove(); }); 

顺便说一句,它将从你的HTML代码中删除javascript。 有了这个HTML代码

 
BookA Delete
BookB Delete
BookC Delete
BookD Delete

删除内联脚本

  

这不起作用,因为$(this)并不像你想的那样引用a-tag(我认为它指的是window对象或其他东西)

而不是在href属性中使用内联javascript执行此操作

而是这样做

  

我相信你的deleteRow函数有一个错误。 这是它应该如何写:

 function deleteRow(ref) { ref.parent().parent().remove(); } 

您传递给deleteRow的引用已经是一个jQuery对象。 你不应该使用$(ref),只是ref,因为ref已经是一个jQuery对象。

我不得不同意应该避免使用内联javascript,但是如果有其他原因使用它是必要或有益的,那么这就是方法。

 
BookADelete
BookBDelete
BookCDelete
BookDDelete