2013-09-12 3 views
1

Я использовал код, который я получил в сети, который добавляет строку таблицы при каждом событии onclick. Он работал идеально для меня, пока я не понял, что мне нужно иметь событие onclick для каждой строки, которая при нажатии будет удалять строку.Удалить строку из таблицы с помощью JQuery. Пожалуйста, см. Код

Есть ли способ для этого, используя мой код?

Пожалуйста, смотрите коды ниже:

Javascript/JQuery код:

<script> 
    var counter = 2;    
    function addRow() { 
     event.preventDefault(); 
     var newRow = jQuery('<tr><td><label>'+ counter +'</label></td><td><textarea name="txtActionStep' + counter + '" style="width:300px; height: 50px; word-wrap:break-word;"></textarea></td><td valign="top"><input type="text" name="txtOwner' +    counter + '"/></td></tr>'); 
     counter++;     
     jQuery('table.actionsteps-list').append(newRow); 
    } 
</script> 

HTML код:

<table class="actionsteps-list" width="510"> 
    <tr> 
     <th colspan="3" align="left">Action Steps</th> 
    </tr> 
    <tr> 
     <td>Step #</td><td>Action Step</td><td>Owner</td> 
    </tr> 
    <tr> 
     <td><label>1</label></td> 
     <td><textarea name="txtActionStep1" style="width:300px; height: 50px; word-wrap:break-word;"></textarea></td> 
     <td valign="top"><input type="text" name="txtOwner1" /></td> 
    </tr> 
</table> 
<table width="510"> 
    <tr> 
     <td align="right"><a href="#" title="" onclick="javascript:addRow();">Add Action</a></td> 
    </tr> 
</table> 

Спасибо!

+0

возможно дубликат [Как удалить строку из динамической таблицы генерации с помощью jquery?] (Http://stackoverflow.com/questions/5933820/how-to-delete-a-row-from-a-dynamic-generate-table-using- jquery) – Barmar

+1

event.preventDefault() ;, эта строка будет вызывать ошибку скрипта как событие не определено. Комментируйте эту строку и попробуйте. –

ответ

3

Конечно, используя делегацию, мы можем это сделать.

$('table.actionsteps-list').on('click', 'tr', function(e){ 
    $(this).remove(); 
}); 

Вы, вероятно, хотите, чтобы добавить кнопку на строке, чтобы сигнализировать удаление, поэтому давайте предположим, что вы добавляете (в каждой строке):

<td><button class="delete">Delete</button></td> 

Затем просто изменить метод делегирования следующим образом:

$('table.actionsteps-list').on('click', '.delete', function(e){ 
    e.preventDefault(); // stops the page jumping to the top 
    $(this).closest('tr').remove(); 
}); 
+0

Здравствуйте, ahren Я пробовал этот, но, к сожалению, все добавленные строки были удалены. Я добавил три строки, и когда я нажал кнопку удаления для второго, все трое исчезли. – aftermath

+0

Привет, пользователь2271455, это действительно работает, я уверяю вас: http://jsfiddle.net/adBvH/ – ahren

+0

Привет, ахрен, я думаю, причина, почему это не работает для меня, состоит в том, что когда я нажал кнопку удаления, он отправляет форма. Я попытался поместить кнопку 'type = button' внутри кнопки, но когда я это сделал, он больше не работал. Возможно, если я использую кнопку

1

Используйте делегат ВЗ поймать событие на уровне таблицы, таким образом любой новой строки, которые добавляются также будут обрабатываться:

$('.actionsteps-list').on('click', 'tr', function(){ 
    $(this).remove(); 
}); 

Примечание стороны:

Не использовать протокол javascript: для встроенного Javascript, который используется только когда вы кладете Javascript в атрибуте ссылки href:

<a href="#" title="" onclick="addRow();">Add Action</a> 
Смежные вопросы