我正在尝试为我的页面编写上下文菜单选项。 基本上右键单击一个div,弹出一个选项菜单,可用于执行任务。jQuery上下文菜单 - 找到触发它的元素
我的问题是试图找到触发一切的原始元素(即右键单击的div)。
我jQuery代码是或多或少:
//this is what displays the context menu
$('.outfeedPosition').bind("contextmenu", function (e) {
$('#contextMenu').css({
top: e.pageY + 'px',
left: e.pageX + 'px'
}).show();
//'this' is the element which was clicked by the user.
alert($(this).attr('id'));
return false;
});
//this is the contextMenu's button handler.
$('#ctxDelete').click(function() {
alert('delete was clicked, but i dont know by which element - so I dont know which one to delete');
});
<div id="contextMenu">
<ul>
<li><a id="ctxInsert" href="#">Insert</a></li>
<li><a id="ctxEdit" href="#">Edit</a></li>
<li><a id="ctxDelete" href="#">Delete</a></li>
</ul>
</div>
- 所以 - 我可以看到什么元素创建活动时最初右击发生。 但是当菜单项被点击时不行。
我一直在通过将元素写出到隐藏文本框中,然后在单击其中一个选项时读取该元素,然后在菜单关闭时将其删除,从而将它们混淆在一起。 虽然看起来不是理想的方法 - 我觉得我缺少一些基本的东西。
希望你看到我想要做的。 我可以根据要求发布更完整的示例。
两种说法:1.您正在使用选择器引擎多次查找#contextMenu元素。缓存该jQuery对象是合理的:'var $ contextMenu = $(“#contextMenu”);'2.防止initialElement被定义是个好主意,在这种情况下'originalElement.id'会抛出一个错误。 – 2010-12-13 16:23:07
干杯Šime。我同意你的观点,但我并不太在意重构。我只是插入OP的代码,并明确了如何使用数据方法。在这种情况下,而不是缓存对象,你可以从链接中受益,而不需要额外的变量:) – 2010-12-13 16:29:56
感谢Jonathon,那就是我所需要的! – 2010-12-14 13:11:52