Контекстное меню HTML5 - доступ к первоначально выбранному элементу при нажатии элемента меню

Я экспериментирую с элементом контекстного меню HTML5 в последней версии Firefox (только браузер, который в настоящее время его поддерживает). Когда я нажимаю элемент меню в контекстном меню, как я могу получить доступ к исходному элементу, который был нажат при создании меню?

Вариант использования будет отображать список элементов, и вы хотите, чтобы пользователь выполнил действие с определенным элементом. После того, как действие было выбрано в меню, вам понадобится способ определить, какой элемент в списке был первоначально выбран для создания меню.

Вот JSFiddle (используйте Firefox для тестирования)


person berg    schedule 27.08.2012    source источник


Ответы (4)


Просто сохраните его где-нибудь, например, this.cte = arguments[0];, а затем загрузите его позже document.getElementById('testitem').cte

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

person Musa    schedule 27.08.2012
comment
да, это тот подход, над которым я работаю сейчас, но я надеялся на лучшее решение. - person berg; 27.08.2012

Я был в такой же или очень похожей ситуации. У меня есть контекстное меню, привязанное к <tr> в заголовке таблицы. Когда пользователь щелкает определенный элемент в контекстном меню, внутри обработчика события щелчка мне нужно было определить, над каким <th> элементом находился указатель мыши, когда был нажат элемент <menuitem>.

Решение: document.activeElement относится именно к тому элементу, который мне нужен. Благодаря:

person cdaddr    schedule 09.11.2012
comment
Спасибо за этот ответ. Он правильно отвечает на заданный вопрос и помогает решить мою проблему. - person Manngo; 30.07.2016

Вы можете использовать подключаемый модуль jquery contextMenu, который не зависит от браузера. В частности, следующий пример: http://medialize.github.io/jQuery-contextMenu/demo/on-dom-element.html показывает, как идентифицировать запускающий элемент DOM.

person Leo    schedule 04.05.2014
comment
Нет, не можешь. Это вообще не контекстное меню HTML5. Помимо прочего, он обходит существующее контекстное меню, поэтому вы теряете исходные элементы. - person Manngo; 30.07.2016

Ключевое слово this работает как в любом случае.

person Paul S.    schedule 27.08.2012
comment
И это совершенно бесполезно, так как указывает на <menuitem>, а не на элемент с атрибутом contextmenu, который его открыл. - person ThiefMaster; 26.11.2017