第一次发布海报,但始终使用此网站作为示例。我的小问题是这个(我已经研究过了,但找不到我问题的解决方案)......
我有一个包含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,因此上下文菜单不会显示,但它不起作用。我可以在页面上完全禁用右键单击,但这将比以往任何时候都更加无效。
任何想法/帮助都会很棒!我愿意接受选择。谢谢,史蒂夫
答案 0 :(得分:0)
首先,这是一个问题:
if (!e) var e = window.event;
,因为所有变量声明都是这样的:
var e;
if (!e) e = window.event;
你有一个名为e
的参数,现在你正在创建一个同名的局部变量来覆盖它。您应该用这个替换该行,只是重新分配参数e
,如果它未定义:
e = e || window.event;
关于您的定位问题,为什么不在鼠标定位的情况下查看对象并弄清楚(在显示菜单之前)目标对象是否是您要显示菜单的对象是否打开,如果点击到达所需目标,则只调用显示菜单的代码。