0

我正在使用jQuery contextMenu (2.x)。发生的情况是,当页面首先加载时,上下文菜单完美运行。但是,当我转到其他页面时,Turbolinks 会将我带到其他页面。而且,当我回到上一页时,我应该能够看到上下文菜单(右键单击),菜单不显示。

我试过了

我还尝试将代码放在正文中,期望代码每次都加载。但我失败了。我也尝试同时使用事件loadvisit; 但没有帮助。

代码

// See this for more info
// https://swisnl.github.io/jQuery-contextMenu/demo/callback.html
window.menuHandler = function () {
    if (document.getElementsByClassName('schedules index').length === 0) {
        return false;
    }
    if ($('.main-container.customer-view').length > 0) {

        $.contextMenu({
            selector: '.dragzones.context-menu-limited',
            items: {
                "autoSchedule": {
                    name: "Auto Schedule", icon: "copy", callback: function (itemKey, opt, e) {
                        ev = {};
                        ev.draggedUserItemIdFromList = $(this).attr('id');
                        ev.target = $(this).parent('td');
                        ev.duplicateCard = true;
                        window.handleCustomTasks(ev);
                    }
                }
            }
        });

        $.contextMenu({
            selector: '.dragzones',
            items: {
                "edit": {
                    name: "Edit", icon: "edit", callback: function (itemKey, opt, e) {
                        $selectedCard = $(this);
                        window.editCardHandler($selectedCard);
                    }
                },
                "delete": {
                    name: "Delete", icon: "delete", callback: function (itemKey, opt, e) {
                        $selectedCard = $(this);
                        window.deleteCardHandler($selectedCard);
                    }
                }
            }
        });
    } else {
        $.contextMenu({
            selector: '.dragzones.context-menu-limited',
            items: {
                "autoSchedule": {
                    name: "Auto Schedule", icon: "copy", callback: function (itemKey, opt, e) {
                        ev = {};
                        ev.draggedUserItemIdFromList = $(this).attr('id');
                        ev.target = $(this).parent('td');
                        ev.duplicateCard = true;
                        window.handleCustomTasks(ev);
                    }
                }
            }
        });
        $.contextMenu({
            selector: '.dragzones',
            items: {
                "edit": {
                    name: "Edit", icon: "edit", callback: function (itemKey, opt, e) {
                        $selectedCard = $(this);
                        window.editCardHandler($selectedCard);
                    }
                },
                "autoSchedule": {
                    name: "Auto Schedule", icon: "copy", callback: function (itemKey, opt, e) {
                        ev = {};
                        ev.draggedUserItemIdFromList = $(this).attr('id');
                        ev.target = $(this).parent('td');
                        ev.duplicateCard = true;
                        window.handleCustomTasks(ev);
                    }
                },
                "delete": {
                    name: "Delete", icon: "delete", callback: function (itemKey, opt, e) {
                        $selectedCard = $(this);
                        window.deleteCardHandler($selectedCard);
                    }
                }
            }
        });
    }
};

document.addEventListener("turbolinks:load", window.menuHandler);
document.addEventListener("turbolinks:visit", window.menuHandler);

眼镜

导轨 4.2 涡轮链接 5

4

1 回答 1

1

对我有用的是以下内容:

$(document).on('turbolinks:before-cache', function() {
  if($('#context-menu-layer').length) {
    $('#context-menu-layer').remove();
    $('.context-menu-list').remove();
  }
});

我正在检查是否还有一个打开的上下文菜单,如果有的话将它从 DOM 中删除。现在,如果我使用上下文菜单离开该页面,我就有了该页面的起点。我希望它对你仍然有用。

于 2019-08-22T13:34:23.487 回答