我有一个页面,用于构建查询并针对不同的实体运行它们(查询构建器/通用搜索的种类)。
结果显示在JQGrid中,因此有效地使用相同的网格来渲染来自不同实体的结果。
此结果网格必须支持上下文菜单,每个实体的上下文菜单都不同。所以我需要一种方法来根据实体更改上下文菜单。每个实体在上下文菜单中可能具有不同数量的菜单项,并且每个项目可能以不同的方式响应(有时是警报,有时是在不同选项卡中生成的操作)。
渲染不同的菜单(通过li)不是问题,但将方法附加到li上证明是一个挑战。任何指针都将受到高度赞赏。
我正在使用jquery.contextmenu-ui.js。
以下是我从他们(JQGrid)网站上挑选的样本
function initGrid() {
$("#EntityGrid").contextMenu('cMenu'
,{
bindings: { /* I would like to avoid this and pass all the actions to one method*/
'edit': function (t) {
editRow();
},
'add': function (t) {
addRow();
},
'del': function (t) {
delRow();
}
},
onContextMenu: function (event, menu) {
var rowId = $(event.target).parent("tr").attr("id")
var grid = $("#EntityGrid");
grid.setSelection(rowId);
return true;
}
}
);
}
谢谢, 阿维纳什
答案 0 :(得分:1)
您可以使用onShowMenu
使用contextMenu
回调,而不是使用bindings
进行静态绑定。以同样的方式,menuId
用作contextMenu
的第一个参数可能是动态创建的div id
,其中空<ul>
。 onShowMenu
的格式为
onShowMenu: function (e, $menu) {
// here one can clear `<ul>` child of $menu
// and append it with "<li>" items
return $menu;
}
在the answer中,您将找到动态构建菜单的代码示例。