在菜单上返回false后右键单击Contextmenu错误显示

时间:2012-07-18 04:57:51

标签: php jquery contextmenu right-click

第一次发布海报,但始终使用此网站作为示例。我的小问题是这个(我已经研究过了,但找不到我问题的解决方案)......

我有一个包含50多个名字的文本列表,以及每天一个项目(所以50 + x 7的矩阵),我希望能够右键单击每日文本(每天一个div),以及显示每天专门针对该项目的菜单。然而,这不是什么大问题,因为我需要单独识别每个项目并使用JS的DivID来调用另一个函数,这变得很重要。我查看了其他jquery菜单选项,但无法弄清楚如何正确地动态检索名称。

我遇到的问题不是创建菜单和捕获项目ID,而是在右键单击完成后停止显示ContextMenu。

我希望页面在其他地方有正确的单击菜单,但不是这些DIV元素,我正在创建的正常菜单。

以下代码已经简化......

这是我正在使用的JS:

function go(e,idname) 
    {
     var rightclick;
     e = e || window.event;
     if (e.which) rightclick = (e.which == 3);
     else if (e.button) rightclick = (e.button == 2);       
     var a = idname.id;
     a = (a.substring(11));  

     ShowContent('ToggleValueFloat');   // Display the DIV      

     $(document).ready(function() 
         {
          $('#ToggleValueFloat').html('MY MENU TEXT' + <a href="Javascript:ToggleDay(' + a + ');">EXAMPLE</a>);         
          return false;
         }); 

    return false; 
    }


function ShowContent(d) {
    if(d.length < 1) { return; }
    var dd = document.getElementById(d);
    AssignPosition(dd);
    dd.style.display = "block";
}

这是我用来举例说明的PHP:

echo  '<a id="togglePopup' . (int)$arrayEId[$allEntries] . '" onmousedown="go(event,this); return false;">example</a>';

这是我用来展示的DIV。

<div id="ToggleValueFloat" style="display:none;  position:absolute;  border-style: solid;  background-color: white;  padding: 5px;"></div>

我每次都试图让它返回false,因此上下文菜单不会显示,但它不起作用。我可以在页面上完全禁用右键单击,但这将比以往任何时候都更加无效。

任何想法/帮助都会很棒!我愿意接受选择。谢谢,史蒂夫

1 个答案:

答案 0 :(得分:0)

首先,这是一个问题:

 if (!e) var e = window.event;

,因为所有变量声明都是这样的:

 var e;
 if (!e) e = window.event;

你有一个名为e的参数,现在你正在创建一个同名的局部变量来覆盖它。您应该用这个替换该行,只是重新分配参数e,如果它未定义:

e = e || window.event;

关于您的定位问题,为什么不在鼠标定位的情况下查看对象并弄清楚(在显示菜单之前)目标对象是否是您要显示菜单的对象是否打开,如果点击到达所需目标,则只调用显示菜单的代码。