我希望右键单击jqGrid中列标题的列名称。任何代码都将不胜感激。
答案 0 :(得分:3)
您可以将contextmenu
事件绑定到所有列标题。每个标头都是<th>
元素,因此其DOM支持cellIndex属性。 cellIndex属性为您提供列标题的索引。如果您在colModel
中使用相同的索引,您将获得该列的定义。 name
属性为您提供列名。
相应的代码可以是以下内容:
var cm = $grid.jqGrid("getGridParam", "colModel");
$("th.ui-th-column", $grid[0].grid.hDiv).bind('contextmenu', function(e) {
var $th = $(e.currentTarget).closest("th");
if ($th.length > 0) {
alert("the header of the column '" + cm[$th[0].cellIndex].name +
"' was clicked");
e.preventDefault(); // don't display standard context menu
}
});
The demo使用代码。只需在列标题上单击鼠标右键,您将看到结果:
答案 1 :(得分:2)
所有jqGrid单元格都具有aria-described-by
属性,该属性由gridId_columnname
组成。您可以使用它来获取列名。
对于网格单元..
var cellName = $(e.target).closest('td').attr('aria-described-by');
var gridId = 'list1';
var columnName = cellName.substr(gridId.length - 1);
对于列标题,除了Oleg的回答,你可以这样做..
var header = $(e.target).closest('th')
var gridId = 'list1';
var columnName = header.attr('id').substr(gridId.length - 1);