Jquery remove对克隆无效

时间:2013-11-28 07:33:51

标签: javascript php jquery html

我有一组要删除的行,但是当我使用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();
                });

请提供解决方案,谢谢

1 个答案:

答案 0 :(得分:2)

由于您正在处理动态元素,因此需要使用event delegationon()的事件委托语法是

$(static-ancestor-element).on(event, dynamic-element-selector, handler)

所以

$('.edu-edit-table').on('click', '.expnedu-record-delete', function () {
    $(this).closest('tr').remove();
});

同样使用.closest()到祖先tr元素