代码之家  ›  专栏  ›  技术社区  ›  Bahman Parsa Manesh

在上下移动行之后,如何在数据表中保留复选框“checked”

  •  2
  • Bahman Parsa Manesh  · 技术社区  · 8 年前

    我有一个数据表,它的每一行都有一个复选框和上下按钮来移动行。但如果我选中一个复选框,然后移动该行,复选框将变为未选中状态。

    如何防止此事件并保持复选框处于选中状态?

    { name: 'name',
      data: 'name',
      title: 'Name',
      searchable: true,
      sortable: false,
      render: function (data, type, full, meta) {
        if (type === 'display') {
            var $span = $('<span></span>');
           $('<input type="checkbox">').appendTo($span);
           return $span.html();
        }
        return data;
      }
    },
    

    这是我的代码: jsFiddle

    0 回复  |  直到 6 年前
        1
  •  1
  •   kenny    6 年前

    您可以将状态保存在变量中,绘制表格后可以选中并更新复选框的状态

    不停摆弄 https://jsfiddle.net/jdvusytn/1/

    function moveRow(row, direction) {
        var index = table.row(row).index();
    
        var order = -1;
        if (direction === 'down') {
           order = 1;
        }
    
        var data1 = table.row(index).data();
        data1.order += order;
        var data1Checked = $(table.row(index).node()).find('input[type=checkbox]').prop('checked');
    
        var data2 = table.row(index + order).data();
        data2.order += -order;
        var data2Checked = $(table.row(index + order).node()).find('input[type=checkbox]').prop('checked');
    
        table.row(index).data(data2);
        table.row(index + order).data(data1);
    
        table.page(0).draw(false);
        $(table.row(index + order).node()).find('input[type=checkbox]').prop('checked', data1Checked);
        $(table.row(index).node()).find('input[type=checkbox]').prop('checked', data2Checked)
    }