4

我正在使用 Adam Shaw 的FullCalendar控件和 jQuery。我想为事件和日子添加一个上下文菜单。我可以通过使用Martin Wendt 的 Context Menu control来实现。我在事件上注册菜单的代码如下所示:

$('#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在弹出窗口打开时,但这显然完全改变了视图。有没有办法强制菜单位于所有其他元素之上?有没有“带到前面”的方法?任何帮助表示赞赏。

4

3 回答 3

5

z-indexbeforeOpen事件中调整

beforeOpen: function (event, ui) {      
    ui.menu.zIndex($(event.target).zIndex() + 1);
}

请参阅:https ://github.com/mar10/jquery-ui-contextmenu/issues/55

于 2014-12-15T08:28:17.713 回答
5

调整z-index可能是你最好的选择。

于 2014-07-30T17:34:02.580 回答
1

这有助于解决您的问题:

beforeOpen: function (event, ui) {
            var $menu = ui.menu,
                $target = ui.target;
            ui.menu.css('z-index', '10000000');
            // Things to happen right before the menu pops up
        }
于 2017-12-15T02:44:39.237 回答