javascript - 未选中复选框时无法从第二个表中删除行

标签 javascript jquery html

当第一个表中的复选框未选中时,我无法删除特定行。似乎索引属性在其他部分不起作用 我正在将行从第一个表克隆到第二个表。

第一个表的 html:

<table id="vergeTable" class="pure-table dataTable table-bordered vergeTable rowClick" role="grid">
   <thead>
      <tr role="row">
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Navn</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Mandat</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Status</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Regnskapsplikt</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Dato startet</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Dato til</th>
         <th class="sorting_disabled" rowspan="1" colspan="1" align="left">Velg</th>
      </tr>
   </thead>
   <tbody>
      <tr class="odd" role="row">
         <td>Alfred Psa Asker</td>
         <td>Ivareta personens interesser innenfor det personlige og økonomiske området</td>
         <td> Tidligere </td>
         <td>Ordinær</td>
         <td>10.07.2013</td>
         <td>01.10.2016</td>
         <td class="contentCenter">
            <input id="regnskapVerge0" class="transForm1Dot5 valgtVerge" name="regnskap.regnskapVerge[0].velgVerge" value="true" checked="checked" type="checkbox">
            <input name="_regnskap.regnskapVerge[0].velgVerge" value="on" type="hidden">
         </td>
      </tr>
      <tr class="odd vergeDetailRow" role="row">
   </tbody>
</table>

第二个表的 html:

<table id="vergeTable2" class="pure-table dataTable table-bordered vergeTable rowClick" role="grid">
   <thead>
   <tbody>
      <tr class="message2" style="display: none;">
      <tr class="odd vergeDetailRow" role="row">
         <td>Alfred Psa Asker</td>
         <td>Ivareta personens interesser innenfor det personlige og økonomiske området</td>
         <td> Tidligere </td>
         <td>Ordinær</td>
         <td>10.07.2013</td>
         <td>01.10.2016</td>
      </tr>
      <tr class="odd vergeDetailRow" role="row">
   </tbody>
</table>

这是js代码:

popuateFinalVergeTable: function(e) {
    $("#vergeTable input:checkbox.valgtVerge").change(function() {
        if (this.checked) {
            $(".message2").hide();
            //Cache cloned object in a variable
            var clone = $(this).closest("tr").clone();
            //Remove checkbox
            clone.find('td').eq(6).remove();
            //Append it
            clone.appendTo("#vergeTable2");
        } else {
            var index = $(this).closest("tr").attr("data-index");
            var findRow = $("#vergeTable2 tr[data-index='" + index + "']");
            findRow.remove();
            var checks = $('#vergeTable').find(':checked').length;
            if (!checks) {
                $(".message2").show();
            }
        }
    }).change();
 },

最佳答案

我不明白为什么你应该在更改事件监听器之后调用 .change()

至于缺少的data-index.data()设置纯粹由jQuery处理的后台数据 - 它不设置HTML属性,所以你不会可以通过 $('tr').attr('data-index') 访问它,但只能使用 $('tr').data('index')

查看此代码并根据您的需要进行编辑

$("#table1 input:checkbox").change(function () {
    if ($(this).prop('checked')) {
        var clone = $(this).closest("tr").clone();
        clone.find('td').eq(1).remove();
        clone.appendTo("#table2");
    } else {
        var index = $(this).closest("tr").attr("data-pk");
        $("#table2 tr[data-pk='" + index + "']").remove();
    }
}); 

看看这个 fiddle https://jsfiddle.net/sj08fk7z/

关于javascript - 未选中复选框时无法从第二个表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41357247/

相关文章:

javascript - Vue v-model.lazy 或@change 不更新我的 Vue 数据

javascript - 如何在reactjs中优化我的验证代码?

jquery - Sublime Text 浏览器预览,JQuery 未运行

html - 在其父表格单元格上拉伸(stretch)链接

html - 使用纯html和css制作outlook不一致的邮件轮播

javascript - 为不同的显示器尺寸自动调整 Shiny webapp 页面

javascript - 尝试在 Flask 应用程序内提供安全脚本

javascript - jQuery 选择类的所有节点,但当前 DOM 分支中的节点

javascript - 在现有的ajax代码中添加图像上传功能

html - 用图片和下拉菜单排列页面