2012-08-14 30 views
5

Uso el jQuery contextMenu de Rodney Rehm en un gráfico SVG. Funciona bien para el uso básico.Obtener ID del elemento cliqueado que abrió el menú contextual usando el complemento jQuery contextMenu

Pero necesito obtener la identificación (o cualquier otra propiedad) del elemento SVG que activó el menú contextual para usarlo en la lista de elementos del menú contextual para obtener nombres de elementos dinámicos.

Trabajo con la demostración Simple Context Menu y ahora quiero reemplazar estos elementos de menú estáticos por dinámicos, dependiendo de la ID del elemento SVG en el que se hizo clic.

Respuesta

10

Esto puede ayudarle a: http://medialize.github.com/jQuery-contextMenu/demo/dynamic-create.html
He aquí algunos ejemplos de código:

$(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 
      }; 
     } 
    }); 
}); 
+0

Gracias por esa pista. Sabía esa demostración. Mi problema es solo obtener la ID. Entonces, ¿cómo puedo obtener la ID del elemento desencadenante? (Por lo tanto, busco la función correcta para su "getTheIDSomehow". – cbl

+0

Gracias por esa pista. Conocía esa demostración, pero no vi la solución. La obtuve finalmente. – cbl

4

cuando uso los menús estáticos, yo obtener el ID de la siguiente manera:

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

Tal vez $ trigger.attr ("id") podría funcionar para usted.

+0

También debe darle al elemento una identificación ... – Joe

6

sólo hay que comprobar el elemento sobre el que el botón derecho del ratón se hace como ::

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

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