javascript - 如何在光标坐标处打开自己的上下文菜单?

标签 javascript jquery

我有自己的上下文菜单,我想调用它并将其坐标设置为 X 和 Y 坐标。我该怎么做?

https://jsfiddle.net/coolerprinter/xg10vzeL/

此代码无效且不起作用:

$("body").on("contextmenu", function(e){
    var x = function(e) { 
        return e.pageX 
    };
    var y = function(e) { 
        return e.pageY 
    };

    $(".contextmenu").css({
        "display": "block",
        "left": x,
        "top": y
    });
    return false;
}); 

最佳答案

首先,您需要将事件 Hook 到 document,而不是 body。其次,您需要将 pageXpageY 的实际值提供给 lefttop CSS 属性,而不是函数.试试这个:

$(document).on("contextmenu", function(e) {
    e.preventDefault();
    $(".contextmenu").css({
        "display": "block",
        "left": e.pageX,
        "top": e.pageY
    });
});

Updated fiddle

要将其扩展为像普通的上下文菜单一样,当在其外部单击时它会消失,那么您需要在文档上添加一个额外的 click 处理程序:

$(document).on({
    contextmenu: function(e) {
        e.preventDefault();
        $(".contextmenu").css({
            "display": "block",
            "left": e.pageX,
            "top": e.pageY
        });
    },
    click: function(e) {
        var $target = $(e.target);
        if ($target.is('.contextmenu') || $target.closest('.contextmenu').length) {
            e.preventDefault();
        } else {
            $(".contextmenu").hide();
        }
    }
});

Example fiddle

关于javascript - 如何在光标坐标处打开自己的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088295/

相关文章:

javascript - 如何通过 js 或 jquery 设置子宽度等于父宽度减去 x px?

Javascript parseInt() 在包含数字的字符串文字上返回 NaN

javascript - Javascript 中变量的引用

javascript - jQuery 获取 HTML 内容 INSIDE div

jquery - 如果存在两个元素之一,则执行某些操作

javascript - 解码带有百分比符号 (%HH) 的十六进制字符串

javascript - jQuery 日期选择器仅选择星期一

jquery - 如何使用 jQuery 或 CSS 实现这种效果?

javascript - jquery "$(document).ready(function () {"无法在 IE 中运行

javascript - 显示具有特定 css-class 的元素