Jquery mobile 使用jQuery移动弹出窗口作为上下文菜单

Jquery mobile 使用jQuery移动弹出窗口作为上下文菜单,jquery-mobile,Jquery Mobile,我使用jquerymobile弹出窗口作为右键单击桌面和移动设备上的taphold时启动的上下文菜单 我的问题:当我右键单击时,弹出窗口出现-它工作正常。但当弹出窗口打开,我在弹出窗口外右键单击时,弹出窗口关闭,标准浏览器上下文菜单出现,而不是新弹出窗口 弹出窗口在其自身下创建一个新层(其类为“.ui popup screen”),以捕获事件,但类似于 $(".ui-popup-screen").on("click", function(event) { event.preventDef

我使用jquerymobile弹出窗口作为右键单击桌面和移动设备上的taphold时启动的上下文菜单

我的问题:当我右键单击时,弹出窗口出现-它工作正常。但当弹出窗口打开,我在弹出窗口外右键单击时,弹出窗口关闭,标准浏览器上下文菜单出现,而不是新弹出窗口

弹出窗口在其自身下创建一个新层(其类为“.ui popup screen”),以捕获事件,但类似于

$(".ui-popup-screen").on("click", function(event) {
    event.preventDefault();
    $('#myElementWithPopupContextMenu').contextmenu();
    return false;
});
不起作用


有没有办法解决这个问题?

我喜欢按照这种模式写作

// prevent default contextmenu and trigger as 'custom-contextmenu'
$(".ui-popup-screen")
    .bind("contextmenu",function(e) {
        e.preventDefault();

        // create and show menu
        $("#myElementWithPopupContextMenu").trigger( "custom-contextmenu" );
    });

// context menu handler
$("#myElementWithPopupContextMenu").bind( "custom-contextmenu", function(e) {
    // my context menu
}

问题是,jQuery以某种方式阻止了.ui弹出屏幕层上的事件。当我在.bind中写入
$(.ui弹出屏幕)时(“单击”,函数(事件){event.preventDefault();警报(“某物”);返回false;})然后我在弹出窗口外单击,什么也没发生$(“#yourPopupId”).on({poppupbeforeposition:function(){$('.ui弹出屏幕').off();});哇,谢谢,这正是我想要的。请将其作为另一个答案来写,这样我就可以将您的答案标记为已接受。您是否为我们提供了一些代码,或者为taphold/ricghtclick解决方案提供了jsfidle?塔克斯!您是否为我们提供了一些代码,或者为taphold/ricghtclick解决方案提供了jsfidle?塔克斯!警告未来阅读谷歌文章的读者:如果您计划使用复制/粘贴功能,那么在上下文菜单中使用jqm弹出窗口是一个坏主意。jqm弹出窗口阻止其他元素获得焦点,这会导致复制到剪贴板的常用方法失败。