2014-02-19 6 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

ли вы проверяете 'бэр()' никогда не дозвонились? –

+0

Вы привязываете функцию к элементам класса btnrem, но у вас нет элемента с присвоенным классом. –

+0

@DhavalMarthak Да, он активирует тестовый тест. –

ответ

0

Попробуйте использовать отдельный click событие здесь вместо того, чтобы использовать вложенную onclick функции и применять event delegation поскольку ваша кнопка ввода была добавлена ​​динамически:

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

Я не думаю, что это требует делегирования, поскольку OP добавил 'onclick' во время выполнения! –

+0

Я просто хочу предложить ему лучший подход ИМО :) – Felix

2

Я хотел бы предложить другой подход ,

Pass this как элемент в качестве ссылки на rem()

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

Где this относится к текущему элементу, то это будет легко найти ближайший tr родителя в вашем rem().

Изменить сценарий к этому

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

Работал !!! thanx Man !! –

+1

@MarceloAymone Рад, что это помогло ... Приветствия! :) –

Смежные вопросы