jquery - mousedown事件触发退出jquery函数

标签 jquery html events contextmenu

我有一个像这样的 jquery 函数:

$(function(){
    $('.viewArea').mousedown(function(event) {
        if(event.which === 3){  // On right click
            pos = ("(" + event.pageX + "," + event.pageY + ")");
            console.log(pos);  // Log the xy coords of click to console
            $.contextMenu("destroy");  // Unregister previous context menu
            $.contextMenu({  // Create new context menu
                selector: '.viewArea',
                callback: function(key, options){
                    var m = "clicked: " + key;
                    window.console && console.log(m);
                },
                items: {
                    "pos":{name:pos,disabled:true}, // have pos in context menu
                    "ci1":{name:"ContextMenu 1"},
                    "ci2":{name:"ContextMenu 2"}
                }
            });
        }
    })
});

该函数使用jquery插件“jQuery contextMenu”。

我想要的是能够右键单击并在上下文菜单中显示位置坐标。问题是,创建第一个上下文菜单后,立即创建第二个上下文菜单(右键单击其他位置)将不会显示更新的坐标。退出第一个上下文菜单(通过左键单击外部,或选择一个选项),然后打开一个新的上下文菜单将显示更新的坐标。

对问题的更深入检查表明,如果您连续右键单击打开上下文菜单,控制台不会记录任何内容,而控制台应该记录新位置。换句话说,它只检测一次右键单击,并且不会再次执行该函数,直到发生不同的输入为止。

我尝试使用 .click 事件代替(并用左键单击),但出现了同样的问题。我还尝试将 jquery.contextMenu.js 中的重新定位标志更改为 false,假设上下文菜单没有重建,但这似乎也没有改变任何内容。

任何帮助将不胜感激。

最佳答案

该插件的作者在这里......

我不确定你到底想在那里实现什么。但为了帮助您找到正确的方向,我修复了您的示例,以使用 position 函数调用位置显示的更新。

http://jsfiddle.net/Ruxb7/1/

关于jquery - mousedown事件触发退出jquery函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531236/

相关文章:

javascript - sweetalert 2 上有超过 2 个按钮

jquery - 在轮播中显示完整图像

php - 如何将变量值从 php 发送到 jquery?

Jquery 根据通配符 ID 添加 .css 到标签

html - 如何让div里面的div居中

javascript - 隐藏第一个表单,然后显示第二个表单。第二个表单执行多次提交

c# - 创建自定义事件

javascript - 带有 event.returnVAlue 的 jQuery 警告已被弃用

javascript - 不同事件的 stopPropagation()

javascript - jQuery表格搜索切表头