您应该了解这两者beforeSelectRow都是在网格体上设置onCellSelect的事件处理程序内部处理的(参见 jqGrid的部分源代码)。此外,只有在返回 true 时才会处理回调,因此只有当单击选择行时(参见代码行)。clickonCellSelectbeforeSelectRow
作为一种解决方法,您可以做的只是将您当前的代码移动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 上的颜色与. 您当前的选择看起来与语句相同:newvar test = new OpenPopupWindow(rowid);OpenPopupWindow$.jgrid.getCellIndex
var theVariableHoldOnlyIntegerValues = true; // assign boolean
重命名函数OpenPopupWindow以openPopupWindow使颜色井然有序。