获取使用jQuery contextMenu插件打开上下文菜单的clicked元素的ID

时间:2012-08-14 10:55:31

标签: jquery jquery-plugins contextmenu

我在SVG图形中使用Rodney Rehm的jQuery contextMenu。它适用于基本用途。

但我需要获取SVG-Element的ID(或任何其他属性),触发上下文菜单在上下文菜单的项目列表中使用它来获取动态项目名称。

我使用Simple Context Menu演示,现在想要用动态菜单替换这些静态菜单项,具体取决于点击的SVG元素的ID。

3 个答案:

答案 0 :(得分:14)

这可能会对您有所帮助:http://medialize.github.com/jQuery-contextMenu/demo/dynamic-create.html
这是一些示例代码:

$(function(){
    $.contextMenu({
        selector: 'my-selector-here', 
        build: function($trigger, e) {
            // this callback is executed every time the menu is to be shown
            // its results are destroyed every time the menu is hidden
            // e is the original contextmenu event, containing e.pageX and e.pageY (amongst other data)
            // $trigger is the element that was rightclicked on - get its id here
            var id = $trigger.getTheIDSomehow()
            // build the menu items
            if (id == 1) {
              menuItems = {...}
            else if (id == 2)
              menuItems = {...}
            return {
                callback: function(key, options) {
                    // this is called when one of the contextmenu options is clicked
                },
                items: menuItems
            };
        }
    });
});

答案 1 :(得分:8)

您只需要检查右键单击哪个元素作为::

$.contextMenu({
            selector: 'tr',
            callback: function (key, options) {
                var m = "clicked: " + key;
                if (key == "Clone") 
               {
                    Your_Function($(this).attr('id'));
               }

            },
            items: {
                "Clone": { name: "Clone" },
                }
            }); 

答案 2 :(得分:7)

当我使用静态菜单时,我得到这样的id:

...
callback: function (key, options) {
    id = options.$trigger.attr("id");
    ...
},
...

也许$ trigger.attr(“id”)可能适合你。