2014-02-19 67 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很高興幫助...乾杯! :) –