jquery中的自定义上下文菜单

时间:2012-04-10 07:28:45

标签: jquery raphael

我遇到一个节点(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始终显示为none,并且只是第一次变为display block。我尝试使用return false而不是event.preventDefault但是在浏览器菜单下面显示了我的菜单。

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

1 个答案:

答案 0 :(得分:1)

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

感谢您的时间