jstree удалить элементы по умолчанию из контекстного меню - PullRequest
17 голосов
/ 13 декабря 2011

У меня проблема с контекстным меню JsTree, как я могу удалить элементы по умолчанию из контекстного меню, такие как Create, Delete, Rename?Я хочу предоставить свои собственные элементы, но элементы по умолчанию все еще в контекстном меню.

    "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); }
                        }
}

Ответы [ 4 ]

15 голосов
/ 14 декабря 2011

У меня была эта проблема пару дней назад, но я еще не решил, является ли это ошибкой или функцией. Это может быть связано с порядком загрузки плагинов.

Для меня работало возвращение элементов из функции:

"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); }
            }
        };
    }
}

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

13 голосов
/ 12 мая 2014

Если вы хотите изменить ярлыки существующих элементов или удалить несколько, подойдет простое решение, подобное приведенному ниже

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

Это установит метку «Создать» элементов как «Ekle» и удалит вырезанную копию из элементов по умолчанию.

6 голосов
/ 30 октября 2012

Просто установите значение false в объекте items.Например, чтобы отключить меню редактирования (вырезать, скопировать, вставить), попробуйте следующее:

contextmenu : {
    items : {
        "ccp" : false
    }
}
3 голосов
/ 12 декабря 2012

Установить ccp , создать , переименовать , удалить в false как это:

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
    }
}
...