因为 jqgrid 事件被定义为网格属性,所以您可以使用该setGridParam
方法重新分配事件参数。设置事件属性以null
禁用事件。
grid_afterInsertRow
不是匿名的,因此可以通过名称轻松引用。我还使用了一个非匿名函数,因为我不确定调用是否setGridParam
会释放任何先前创建的传递给它的匿名函数引用。
function grid_afterInsertRow(rowID, rowData, rowElem) {
// do stuff
}
function toggle_afterInsertRow(isEnabled) {
if(isEnabled) {
$('#grid').jqGrid('setGridParam', {afterInsertRow: grid_afterInsertRow});
} else {
$('#grid').jqGrid('setGridParam', {afterInsertRow: null});
}
}
一些重构给出了上述代码的通用版本
// usage: toggleGridEvent($('#grid'), true, afterInsertRow, grid_afterInsertRow);
function toggleGridEvent($grid, isEnabled, eventName, callback) {
var params = {};
if(isEnabled) {
params[eventName] = callback;
} else {
params[eventName] = null;
}
$grid.jqGrid('setGridParam', {afterInsertRow: grid_afterInsertRow});
}