【问题标题】:Custom Context menu in jqueryjquery中的自定义上下文菜单
【发布时间】:2012-04-22 12:14:33
【问题描述】:

我遇到一个节点(Raphael rect)附加了事件拖动的情况。

r4.drag(dragMove, dragStart, dragStop);

在 dragStop 处理程序中,我区分了拖动事件和右键单击事件

if (editLabelFlag == false) {
    if (event.which == 3) {
        event.preventDefault();
        $('#contextmenu').slideDown('fast').delay(1000).slideUp();
        // code for
    }
} else {
    // drag code
}

我在 dragMove 处理程序中将 editLabelFlag 设置为 true 以区分拖动和单击 为了停止显示浏览器上下文菜单,我给出了 event.preventDefault()。

我面临的问题是,这是第一次完美无缺地发生,并且对于以后在节点上的所有右键单击,我只能获得浏览器上下文菜单。我已经检查了 Firebug,发现 contextmenu div 始终保持无显示,并且仅在第一次成为显示块时才显示。我尝试使用 return false 而不是 event.preventDefault 但这会在浏览器菜单下方显示我的菜单。

preventDefault 是否会导致此问题? 请提供一些

【问题讨论】:

  • 这篇文章可能有用:stackoverflow.com/a/706728/239380
  • 没有一个答案或问题是指第一次后未处理的事件!我的代码所做的类似于 Simon 发布的最后一个答案

标签: jquery raphael


【解决方案1】:

这不是因为浏览器停止了任何事件,实际上我是在创建一个克隆并拖动原件。在 dragstart 中,克隆被放置在原始位置,并且在单击期间不会被删除。因此,没有为原始映射的事件适用于克隆,因此点击只发生了一次。

感谢您的宝贵时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多