2014-02-19 42 views
-1

我试图添加新行并删除表上。 我有下面的代码:Jquery .remove()不工作在表

$(document).ready(function() { 

var n_obs = $("input[name$='[obs]']").length; 
var n_esp = $("select[name$='[e_status]']").length; 

addEsp = (function() { 
    $("#tb_especialidade").append("<tr><td>" + n_esp + "</td></tr>"); 
    n_esp++; 
}); 

addObs = (function() { 
    $("#tb_status").append(
      "<tr>" + 
      "<td>" + n_obs + "</td>" + 
      "<td><input type=\"button\" value=\"Cancelar\" onclick=\"rem();\"></td>" + 
      "</tr>" 
      ); 
    n_obs++; 
}); 

rem = (function() { 
    $(this).closest("tr").remove(); 
}); 
}); 

对于增加新的元素正在工作,但不删除。 有什么建议吗?

+0

你检查你的'REM()'曾经被调用? –

+0

您将函数绑定到类btnrem的元素,但您没有任何元素分配了该类。 –

+0

@DhavalMarthak是的,他激活了一个警报测试。 –

回答

0

尝试:

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

这里尝试使用不同的click事件,而不是使用嵌套onclick功能,并因为你的输入按钮被动态地添加应用event delegation

$('#tb_status').on('click', 'input[type="button"]', function() { 
    $(this).closest("tr").remove(); 
}); 
+0

我不认为它需要委派,因为OP已经在运行时添加了'onclick'! –

+0

我只是想建议他一个更好的方法IMO :) – Felix

2

我建议另一种方法。

this作为元素作为参考rem()

"<td><input type=\"button\" value=\"Cancelar\" onclick=\"rem(this);\"></td>" 
--------------------------------------------------------------^---------- 

this指的是当前元素,那么这将是很容易找到的最接近tr父在rem()

更改脚本这个

rem = (function(elem) { 
    $(elem).closest("tr").remove(); 
}); 
+1

工作!!! thanx人! –

+1

@MarceloAymone很高兴帮助...干杯! :) –