您应该了解这两者beforeSelectRow
都是在网格体上设置onCellSelect
的事件处理程序内部处理的(参见 jqGrid的部分源代码)。此外,只有在返回 true 时才会处理回调,因此只有当单击选择行时(参见代码行)。click
onCellSelect
beforeSelectRow
作为一种解决方法,您可以做的只是将您当前的代码移动onCellSelect
到beforeSelectRow
:
beforeSelectRow: function (rowid, e) {
var $self = $(this),
iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]),
cm = $self.jqGrid("getGridParam", "colModel");
if (cm[iCol].name === "cb") {
return true;
}
if (iCol === 10) {
OpenPopupWindow(rowid);
}
return false;
}
只是一些常见的补充说明。我建议您将测试列号更改为测试列名:cm[iCol].name === 'myColumnName'
而不是iCol === 10
. 它将使代码更易于维护。此外,我建议您将函数名称更改OpenPopupWindow
为openPopupWindow
. JavaScript 的命名转换要求仅将具有第一个大写名称的函数用于构造函数。如果您选择函数的名称,那么您将给出与operator:OpenPopupWindow
一起使用它的提示。您会看到,甚至stackoverflow 上的颜色与. 您当前的选择看起来与语句相同:new
var test = new OpenPopupWindow(rowid);
OpenPopupWindow
$.jgrid.getCellIndex
var theVariableHoldOnlyIntegerValues = true; // assign boolean
重命名函数OpenPopupWindow
以openPopupWindow
使颜色井然有序。