jQuery - 右键菜单插件contextMenu使用详解4(禁用菜单、菜单项)
九、禁用/启用菜单
菜单触发对象的 contextMenu() 方法可以传递个布尔值,用来表示是否启用菜单。
- true:菜单可用
- false:菜单禁用
1,效果图
- 默认情况下右键点击“按钮1”会出现菜单。
- 如果勾选“禁用”复选框,再次右键点击“按钮1”则不会出现菜单。

2,样例代码
<input id="checkbox1" type="checkbox" value="101"/>
<label for="checkbox1">禁用“按钮1”菜单</label>
<br><br>
<button class="context-menu-one">按钮1</button>
<script type="text/javascript">
$(function() {
//初始化菜单
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
console.log("点击了:" + key);
},
items: {
"edit": {name: "编辑", icon: "edit"},
}
});
//复选框点击
$('#checkbox1').on('click', function(e) {
var isChecked = $(this).prop('checked');
if(isChecked){
$('.context-menu-one').contextMenu(false); //禁用菜单
}else{
$('.context-menu-one').contextMenu(true); //启用菜单
}
});
});
</script>
十、禁用/启用菜单项
菜单项里有个 disabled 配置属性,表示该菜单项是否可用。
1,效果图
打开菜单后可以发现:“编辑”项可以使用,而“剪切”项变成灰色不可用。

2,样例代码
(1)我们可以直接设置 true 或者 false。<button class="context-menu-one">按钮1</button>
<script type="text/javascript">
$(function() {
//初始化菜单
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
console.log("点击了:" + key);
},
items: {
"edit": {name: "编辑", icon: "edit", disabled: false},
"cut": {name: "剪切", icon: "cut", disabled: true},
}
});
});
</script>
(2)当然也可以通过回调方法返回。
<button class="context-menu-one">按钮1</button>
<script type="text/javascript">
$(function() {
//初始化菜单
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
console.log("点击了:" + key);
},
items: {
"edit": {
name: "编辑",
icon: "edit",
disabled: function(){ return false; }
},
"cut": {
name: "剪切",
icon: "cut",
disabled: function(){ return true; }
},
}
});
});
</script>
十一、动态改变菜单项可用状态
1,效果图
- 默认情况下,“剪切”项是灰色不可用的。
- 点击“toggle”项,可以让“剪切”项在可用和不可用这两个状态间切换。
2,样例代码
<button class="context-menu-one">按钮1</button>
<script type="text/javascript">
$(function() {
//初始化菜单
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
console.log("点击了:" + key);
},
items: {
"edit": { name: "编辑", icon: "edit" },
"cut": {
name: "剪切",
icon: "cut",
disabled: function(key, opt) {
//this为触发对象的引用
return !this.data('cutDisabled');
}
},
"toggle": {
name: "Toggle",
callback: function() {
//this为触发对象的引用
this.data('cutDisabled', !this.data('cutDisabled'));
return false;
}
}
}
});
});
</script>
