Отключение элементов контекстного меню jQuery

#javascript #jquery #contextmenu

#javascript #jquery #контекстное меню

Вопрос:

Прежде всего, спасибо за всю помощь по моим предыдущим вопросам. Ну, мой вопрос касается контекстного меню jQuery. У меня есть контекстное меню, которое работает отлично, показывая все различные параметры, однако мне нужно отключить несколько параметров (скажем, пункт B в коде ниже), и я не могу этого сделать. Вот как выглядит код,

У меня есть массив menuitems, который содержит все элементы контекстного меню, например,

 function createMenuItems() {
    var menuitems = {};
    menuitems['Item A'] = {
        click: function() {
            // Some Code
        }
    };
    menuitems['Item B'] = {
        click: function() {
            // Some Code
        }
    };
    menuitems['Item C'] = {
        click: function() {
            // Some Code
        }
    };

    return menuitems;
}
  

Эта функция вызывается следующим образом,

 menuitems = createMenuItems();
  

Теперь контекстное меню создается с помощью следующей команды,

 element.children("a").contextMenu("myMenu",menuitems,
    {
        disable_native_context_menu: true
    });
  

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

С уважением

Ответ №1:

Похоже, что вы используете http://code.google.com/p/youpivot/source/browse/trunk/chromeextension/include/jquery.contextmenu.js?r=46

Насколько я могу судить по исходному коду, «отключено» не поддерживается. Вы можете попробовать и добавить его самостоятельно, например:

 menuitems['Item B'] = {
    click: function() {
        // Some Code
    },
    disabled: true
};
  

А затем в файле плагина добавьте это:

 if (item_options.disabled)
    menuItem.attr("disabled", "disabled");
  

после строки 39 в источнике, предоставленном ссылкой (я предполагаю, что ваш файл может отличаться от этого, поэтому вы можете просто найти похожее место).

Надеюсь, это поможет.

Комментарии:

1. Я вдруг понял, что элемент меню — это li, поэтому отключение ничего не даст. Вам нужно if (item_options.disabled) { MenuItem.addClass(«элемент меню-отключен»); } else { MenuItem.appendTo(menu).bind(‘click’, функция (e) { item_options.click($(this).parent().data(«вызывающий»)); e.preventDefault(); }); } Таким образом, вы в основном перемещаете привязку щелчка при условии, что элемент не отключен, а для отключенного элемента вы добавляете class .menu-item-disabled, который вы можете сделать, скажем .menu-item-disabled {color: серый}