jquery中的自定义上下文菜单

jquery中的自定义上下文菜单,jquery,raphael,Jquery,Raphael,我有一个节点(Raphael rect)附加了事件拖动的情况 r4.drag(dragMove, dragStart, dragStop); 在dragStop处理程序中,我区分了拖动和右键单击事件 if (editLabelFlag == false) { if (event.which == 3) { event.preventDefault(); $('#contextmenu').slideDown('fast').delay(1000).sli

我有一个节点(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始终保持display none,并且只有在第一次变成display block时才显示。我尝试过使用return false而不是event.prevent default,但这会在浏览器菜单下面显示我的菜单

默认值是否导致此问题?
请提供一些

这不是因为浏览器停止了任何事件,实际上我是在创建克隆并拖动原始文件。在dragstart中,克隆已放置到位,在单击过程中未删除。因此,没有为“原始”映射的事件对“克隆”有效,因此单击仅发生一次


感谢您抽出时间

这不是因为浏览器停止了任何事件,实际上我是在创建克隆并拖动原始文件。在dragstart中,克隆已放置到位,在单击过程中未删除。因此,没有为“原始”映射的事件对“克隆”有效,因此单击仅发生一次


感谢您的时间

这篇文章可能会很有用:没有任何答案或问题涉及到第一次之后未处理的事件!我的代码所做的与Simonth发布的最后一个答案类似。这篇文章可能很有用:没有一个答案或问题涉及第一次之后未处理的事件!我的代码所做的与Simon发布的最后一个答案类似