У меня есть набор строк, которые нужно удалить, но когда я использовал удаление jquery, это не сработало. Он не удалял клон, но он удалил оригинал. То, что я хочу, - это когда нажата кнопка удаления, а строки, которые являются родительскими родителями, должны быть удалены.
HTML
<tr class="expnedu-edu-record">
<td>
<select name="expnedu-record-tingkat" class="expnedu-record-tingkat">
<option>SD</option>
<option>SMP</option>
<option>SMA</option>
<option>SMK</option>
<option>D3</option>
<option>S1</option>
<option>S2</option>
<option>S3</option>
<option>Lainnya</option>
</select>
</td>
<td>
<select name="expnedu-record-tahun-min" class="expnedu-record-tahun-min">
<?php
$i = date('Y');
for($i;$i>=1900;$i--): ?>
<option><?php echo $i; ?></option>
<?php endfor; ?>
</select> - <select name="expnedu-record-tahun-max" class="expnedu-record-tahun-max">
<?php
$i = date('Y');
for($i;$i>=1900;$i--): ?>
<option><?php echo $i; ?></option>
<?php endfor; ?>
</select>
</td>
<td>
<input type="text" name="expnedu-record-instansi" class="expnedu-record-instansi" />
</td>
<td>
<input type="text" name="expnedu-record-nilai" class="expnedu-record-nilai" />
</td>
<td>
<input type="button" value="X" class="expnedu-record-delete"/>
</td>
</tr>
Jquery
var edu_record = $('.expnedu-edu-record').clone();
$('#expnedu-add-edu').click(function(){
var new_record = edu_record.clone(false);
new_record.appendTo('.edu-edit-table');
});
$('.expnedu-record-delete').on('click',function(){
$(this).parent().parent().remove();
});
Пожалуйста, предоставьте решение, спасибо
Поскольку вы имеете дело с динамическими элементами, вам нужно использовать делегирование событий. Синтаксис делегирования события on()
$(static-ancestor-element).on(event, dynamic-element-selector, handler)
так
$('.edu-edit-table').on('click', '.expnedu-record-delete', function () {
$(this).closest('tr').remove();
});
Также используйте .closest() для элемента precestor tr