首页 > 解决方案 > HTML/js 代码中的 JQuery 上下文菜单

问题描述

我有一个带有一些 HTML/js 代码的应用程序。当我在此文档的 div 中单击鼠标右键时,我正在使用 jquery 在 $document 元素中显示上下文菜单(版本:1.6.6)。使用“自动隐藏”它会在鼠标离开 HTML 文档时关闭,但我想在其他一些情况下关闭上下文菜单。这是我的第一个问题,如何以编程方式关闭菜单。

我的代码:

$(document).contextMenu({
  selector: '#' + panelId,
  autoHide: true,
  items: ...
  callback: function(key, options) {
    if (key === ...
  } 

我有一个需要关闭菜单的功能,但是我的所有测试都失败了:

function()
{
    $(document).contextmenu(false);
    $(document).trigger('contextmenu:hide');
    $trigger = $('#' + panelId);
    $trigger.contextMenu(false);
}

'panelId' 是我在 div 中右键单击时获得的值,使用带有 'myFunction' 值的 'oncontextmenu' 属性。因此,在显示上下文菜单之前调用了“myFunction”,并将 ID 保存在那里,用于在菜单“即将显示”时启用/禁用项目

我的第二个问题:如果右键单击 div 元素后打开上下文菜单(将 divId 保存在“myFunction”中),并且我在另一个 div 元素中单击右键,则不会调用“myFunction”,因此我无法保存新的divId,并且“新”上下文菜单具有与前一个相同的选项。上下文菜单打开时如何获得右键单击?我需要新的divId.

标签: javascriptjqueryhtmlcontextmenu

解决方案


我已将我的插件版本更新为 https://github.com/swisnl/jQuery-contextMenu/blob/master/src/jquery.contextMenu.js 并且我的第二个问题得到了解决。

然后我找到了如何关闭菜单,也许它可以帮助任何人:

$('.context-menu-list').trigger('contextmenu:hide');

问候,迭戈


推荐阅读