如何在执行后杀死我的所有功能?

时间:2016-12-29 15:32:27

标签: javascript jquery twitter-bootstrap datatables

我的条件为column == 1,如果是这种情况,则会初始化函数MakeCellsEditable和函数myCallbackFunction

<script src="https://raw.githubusercontent.com/ejbeaty/CellEdit/master/js/dataTables.cellEdit.js"></script>

$(document).ready(function () {
    var table = $('#myTable').DataTable();
    $('#myTable tbody').on('mousedown', 'td', function () {
        $('#myTable').data('column', table.cell(this).index().columnVisible);
    });
    if (column == 1) {
       table.MakeCellsEditable({
           "onUpdate": myCallbackFunction
       });
    }
});

function myCallbackFunction(updatedCell, updatedRow, oldValue) {
    var array = updatedRow.data();
    var id = array[0];
    var column = $('#myTable').data('column');
    console.log("The column is: " + column);
    jQuery.ajax({
        type: "POST",
        url: "update.php",
        data: {
            updatedCell: updatedCell.data(),
            id: id,
            column: column,
        },
        cache: false
    });
}

我想要做的是,在执行这些功能之后,我想杀死它们。因为否则,如果我一次单击第1列,那么我的所有表都是可编辑的(不仅是第1列)。 我尝试了table.unbind();table.die(),但这没有成功。

我在代码末尾进行了测试:

 function destroyTable() {
        if ($.fn.DataTable.isDataTable('#myTable')) {
            table.destroy();
            table.MakeCellsEditable("destroy");
        }
    }

但它没有成功

2 个答案:

答案 0 :(得分:1)

回答标题中的问题:是的:

function thiswilljustworkonce(){
 alert("once");
this.thiswilljustworkonce=function(){};
}

thiswilljustworkonce();
thiswilljustworkonce();

答案 1 :(得分:1)

使用CellEdit插件的columns选项指定哪个列需要可编辑。没有必要删除事件处理程序。

var table = $('#example').DataTable();

function myCallbackFunction (updatedCell, updatedRow, oldValue) {
    console.log("The new value for the cell is: " + updatedCell.data());
    console.log("The values for each cell in that row are: " + updatedRow.data());
}

table.MakeCellsEditable({
    "columns": [0],
    "onUpdate": myCallbackFunction,
    "confirmationButton": true
});

请参阅this example以获取代码和演示。