0

第一次发帖,但一直使用这个网站作为例子。我的小问题是这个(我已经研究过了,但找不到我的问题的解决方案)......

我有一个包含 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,这样上下文菜单就不会显示,但它不起作用。我可以在页面上完全禁用右键单击,但这将证明比以往任何时候都没有效率。

任何想法/帮助都会很棒!我对选择持开放态度。谢谢,史蒂夫

4

1 回答 1

1

对于初学者来说,这是一个问题:

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

其中,由于所有变量声明都被提升,因此与此相同:

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

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

e = e || window.event;

至于您的定位问题,为什么不只查看鼠标所针对的对象并确定(在显示菜单之前)目标对象是否是您想要在其上显示菜单的对象然后仅在单击所需目标时才调用显示菜单的代码。

于 2012-07-18T05:03:07.450 回答