我用的是亚当·肖的FullCalendar
与 jQuery 一起控制。我想为事件和日期添加上下文菜单。我能够通过使用来实现这一点Martin Wendt 的上下文菜单控件 http://wwwendt.de/tech/demo/jquery-contextmenu/jquery.ui-contextmenu.js。我用于注册事件菜单的代码如下所示:
$('#calendar').fullCalendar({
// Other arguments
eventRender: function (event, element) {
var originalClass = element[0].className;
element[0].className = originalClass + ' hasmenu';
},
dayRender: function (day, cell) {
var originalClass = cell[0].className;
cell[0].className = originalClass + ' hasmenu';
});
});
我本质上是添加一个名为hasmenu
日历中的每个事件和日期。
$(document).contextmenu({
delegate: ".hasmenu",
preventContextMenuForPopup: true,
preventSelect: true,
menu: [
{title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors"},
{title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
{title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
],
select: function(event, ui) {
// Logic for handing the selected option
},
beforeOpen: function(event, ui) {
// Things to happen right before the menu pops up
}
});
这样做的问题是菜单出现在日历控件后面。我相信这是因为日历事件分配了一些其他类并添加了hasmenu
类正在搞乱这些。当我在 VS 中设置断点时,它说该事件具有以下类:
"fc-event fc-event-hori fc-event-draggable fc-event-start fc-event-end hasmenu"
这就是它在页面上的样子:
我尝试暂时将事件类别设置为hasmenu
虽然弹出窗口是打开的,但这显然完全改变了视图。有没有办法强制菜单位于所有其他元素之上?有没有“带到前面”的方法?任何帮助表示赞赏。