#jquery #contextmenu
#jquery #contextmenu
Вопрос:
Для моего asp.net приложение mvc 3 Я использую этот плагин. Но у меня проблема, я хочу включить или отключить некоторые пункты меню после того, как я создал меню, например:
<script type="text/javascript">
$(function(){
/**************************************************
* Menu 1
**************************************************/
$.contextMenu({selector: '.context-menu-one', items: {
edit: {name: "Edit", icon: "edit", callback: $.noop, accesskey:"e d i t"},
cut: {name: "Cut", icon: "cut", callback: $.noop, accesskey:"c u t"},
copy: {name: "Copy", icon: "copy", callback: $.noop, accesskey:"c o p y"},
paste: {name: "Paste", icon: "paste", callback: $.noop, accesskey:"p a s t e"},
"delete": {name: "Delete", icon: "delete", callback: $.noop, accesskey:"d e l t"},
sep1: "---------",
quit: {name: "Quit", icon: "quit", callback: $.noop, accesskey:"q u i t"}
}});
//not working
$('.context-menu-one').contextMenu('commands[0].disabled','true');
});
</script>
Не работает, есть идеи?
Ответ №1:
Согласно документации плагина, вы можете указать вызываемую функцию, чтобы определить, отключен ли пункт меню или нет.
Таким образом, вы можете закрыть эту функцию над локальной переменной и обновить эту переменную, чтобы включить или отключить элементы. Что-то вроде:
$(function() {
var itemsDisabled = {}; // Enable everything initially.
$.contextMenu({
selector: ".context-menu-one",
items: {
// [...]
cut: {
name: "Cut",
icon: "cut",
callback: $.noop,
accesskey: "c u t",
disabled: function(key, opt) {
return !!itemsDisabled[key];
}
}
// [...]
}
});
// Disable the "Cut" menu item.
itemsDisabled["cut"] = true;
});
Комментарии:
1. Кстати, я обнаружил, что для того, чтобы скрыть элемент, а не просто отключить его, вы можете использовать опцию «видимый» вместо «отключен». Определение выполняется таким же образом, за исключением того факта, что функция в разделе «видимый» выполняется дважды, и при первом запуске параметры не возвращаются. Поэтому вам сначала нужно будет проверить, возвращает ли «$ trigger» что-либо, а затем запустить необходимый код в этой функции.
2. @TheCuBeMan было бы неплохо, если бы они упомянули это в документации! swisnl.github.io/jQuery-contextMenu/docs/items.html#visible