【问题标题】:HTML5 contextmenu - Access originally clicked element when menu item is clickedHTML5 contextmenu - 单击菜单项时访问最初单击的元素
【发布时间】:2012-08-21 13:14:31
【问题描述】:

我正在最新版本的 Firefox 中试验 HTML5 上下文菜单项(只有当前支持它的浏览器)。当我从上下文菜单中单击菜单项时,如何访问生成菜单时单击的原始元素?

该用例将显示项目列表,并且您希望用户对特定项目执行操作。从菜单中单击操作后,您需要一种方法来确定最初单击列表中的哪个元素以生成菜单。

Here is a JSFiddle (use Firefox to test)

【问题讨论】:

    标签: javascript html contextmenu


    【解决方案1】:

    只需将其保存在 this.cte = arguments[0]; 之类的位置,然后稍后再检索它 document.getElementById('testitem').cte

    http://jsfiddle.net/GALmp/4/

    【讨论】:

    • 是的,我现在正在使用这种方法,但我希望有更好的解决方案。
    【解决方案2】:

    我处于相同或非常相似的情况。我有一个上下文菜单绑定到表标题中的<tr>。当用户单击上下文菜单中的某个项目时,在单击事件处理程序中,我需要确定单击 <menuitem> 元素时鼠标指针位于哪个 <th> 元素上。

    解决方案:document.activeElement 指的正是我需要的元素。感谢:

    【讨论】:

    • 感谢您的回答。它正确回答了所提出的问题,并有助于解决我的问题。
    【解决方案3】:

    您可以使用独立于浏览器的 jquery contextMenu 插件。特别是以下示例: http://medialize.github.io/jQuery-contextMenu/demo/on-dom-element.html 展示了如何识别触发的 DOM 元素。

    【讨论】:

    • 不,你不能。这根本不是 HTML5 上下文菜单。除此之外,它会绕过现有的上下文菜单,因此您会丢失原始项目。
    【解决方案4】:

    this 关键字在任何情况下都有效。

    【讨论】:

    • 而且它完全没有用,因为它指向<menuitem>,而不是打开它的具有contextmenu 属性的项目。
    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多