2011-12-13 17 views
17

Tengo un problema con el menú contextual de JsTree, ¿cómo puedo eliminar los elementos predeterminados del menú contextual como Crear, Eliminar, Cambiar nombre? Quiero proporcionar mis propios elementos, pero los elementos predeterminados todavía están en el menú contextual.jstree eliminar elementos predeterminados del menú contextual

"contextmenu" : { 
        "items" : { 
         "IsimVer" : { 
          "label" : "İsim Değiştir", 
          "action" : function (obj) { this.rename(obj); } 
         }, 
         "Ekle" : { 
          "label" : "Ekle", 
          "action" : function (obj) { this.create(obj); } 
         }, 
         "Sil" : { 
          "label" : "Sil", 
          "action" : function (obj) { this.remove(obj); } 
         } 
} 
+0

¿Cuál es el problema con el cambio de elementos dentro de 'elementos' a nuevos valores? [link] (http://www.jstree.com/documentation/contextmenu) uno de los padres es 'key' y' label' será la etiqueta para el menú contextual – Pradeep

Respuesta

15

Tuve este problema hace un par de días pero todavía no he decidido si se trata de un error o una característica. Puede estar relacionado con el orden en que se cargan los complementos.

Lo que funcionó para mí era volver los elementos de una función:

"contextmenu" : { 
    "items" : function ($node) { 
     return { 
      "IsimVer" : { 
       "label" : "İsim Değiştir", 
       "action" : function (obj) { this.rename(obj); } 
      }, 
      "Ekle" : { 
       "label" : "Ekle", 
       "action" : function (obj) { this.create(obj); } 
      }, 
      "Sil" : { 
       "label" : "Sil", 
       "action" : function (obj) { this.remove(obj); } 
      } 
     }; 
    } 
} 

Después de algunas búsquedas parece que el default behaviour is for your menu items to extend the defaults, por lo que esta es una característica. Desafortunadamente, la documentación actualmente carece de detalles sobre este punto.

+2

tiene el mismo aspecto pero me di cuenta de que tienes que hacer esto:}, \t \t \t \t crear: falso, \t \t \t \t de cambio de nombre: falso, \t \t \t \t remove: falso, \t \t \t \t ccp: falsa en artículos objeto. – LostMohican

+0

Gracias me hicieron la vida más fácil. – Ashwin

6

Simplemente establezca el valor como falso en el objeto de elementos. Por ejemplo, para desactivar edición (cortar copia, pegar) del menú intente esto:

contextmenu : { 
    items : { 
     "ccp" : false 
    } 
} 
3


Establecer ccp, crear, cambiar el nombre, eliminar a falsa así:

plugins : ["themes","json_data","ui","crrm", "hotkeys", "types", "contextmenu"], 
contextmenu : { 
    items : { 
     "IsimVer" : { 
      "label" : "IsimVer", 
      "action" : function (obj) { alert("IsimVer"); } 
     }, 
     "Ekle" : { 
      "label" : "Ekle", 
      "action" : function (obj) { alert("Ekle"); } 
     }, 
     "Sil" : { 
      "label" : "Sil", 
      "action" : function (obj) { alert("tiga"); } 
     }, 
     "ccp" : false, 
     "create" : false, 
     "rename" : false, 
     "remove" : false 
    } 
} 
12

Si desea modificar las etiquetas de los elementos existentes o eliminar algunos, una solución simple como la siguiente funcionará

"contextmenu": { 
    "items": function(node) { 
      var defaultItems = $.jstree.defaults.contextmenu.items(); 
      defaultItems.create.label = "Ekle"; 
      delete defaultItems.ccp; 
      return defaultItems; 
     } 
    } 

Esto configurará la etiqueta de elementos "Crear" como "Ekle" y eliminará la copia cortada de los elementos por defecto.

+0

Esta es la mejor respuesta que he visto. –

+0

este fue el único que funcionó para mí usando 3.x del jstree, gracias – Gurnard

+0

¡Lo mismo aquí! ¡Gracias! –

Cuestiones relacionadas