【问题标题】:jQuery onClick on Custom Context MenujQuery onClick 自定义上下文菜单
【发布时间】:2015-09-16 20:23:18
【问题描述】:

我有一个自定义右键单击上下文菜单,当右键单击页面时会显示该菜单。右键单击事件后,如果用户单击页面,则隐藏上下文菜单。我需要解决的问题是,如果用户单击上下文菜单(选择下拉菜单),那么上下文菜单会被 jQuery onClick 事件隐藏。有什么方法可以识别被点击元素的 div 以便我可以决定是否从那里隐藏菜单?

    $('body').on('contextmenu', options.contextMenu.graphName, function (event) {
        showContextMenu(event);
    });
    $(document).bind('click', function (event) {
        //if(event.targetDiv.id != '#graphMenu') <- Is something like this possible?
               $('#graphMenu').hide();
    });

【问题讨论】:

  • 你能做个小提琴,让我们看看代码在起作用吗?

标签: javascript jquery html


【解决方案1】:

有一些方法可以实现这一点,但我知道的最好的方法是在菜单悬停时添加一个标志,并在鼠标离开菜单时删除它:

$('#graphMenu')
  .mouseenter(function(e) {
    $(this).data('hovered', true);
  })
  .mouseleave(function(e) {
    $(this).data('hovered', false);
  });

$('body').on('contextmenu', options.contextMenu.graphName, function (event) {
  showContextMenu(event);
});

$(document).bind('click', function (event) {
  if (!$('#graphMenu').data('hovered'))
    $('#graphMenu').hide();
});

【讨论】:

  • @TheyCallMeSam 所以,请点击箭头为我的答案投票,然后点击 V 接受它:)
【解决方案2】:

试试:

$('body').on('contextmenu', options.contextMenu.graphName, function (event) {
    showContextMenu(event);
});
$(document).bind('click', function (event) {
    if(event.target.id != '#graphMenu') {
           $('#graphMenu').hide();
    }
});

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多