[英]how to enable and disable the context menu based on checkbox condition in dojo dijit?
function(Menu, MenuItem){
var pMenu = null;
pMenu = new Menu({
targetNodeIds: ["progmenu"]
});
pMenu.addChild(new MenuItem({
label: "Simple menu item",
onClick: function(){
pMenu.destroy();
}
}));
这将在div上创建上下文菜单,但是我想在未选中它时禁用上下文菜单,然后在选中它时再次对其进行打包。可以有人帮我..我的HTML页面是..
<div id="progmenu" >
<input type="checkbox" /> click </div>
dijit/Menu
本身无法禁用,但是,可以使用disabled
属性禁用每个dijit/MenuItem
。
因此,如果要禁用菜单,请使用dijit/Menu::getChildren()
遍历所有菜单子级,然后设置属性。
要获取复选框的状态,请使用dojo/on
或dojo/query
向其添加onChange
事件处理程序,并使用event.target.checked
可以检查是否已选中它。
例如:
query("#progmenu input[type=checkbox]").on("change", function(evt) { // On change
pMenu.getChildren().forEach(function(child) { // Loop over children
child.set('disabled', evt.target.checked); // Set disabled state
});
});
可以在JSFiddle上找到一个演示: http : //jsfiddle.net/659t7dfj/
小提示,我正在使用Array.prototype.forEach()
遍历菜单项。 如果需要支持较旧的浏览器,则必须切换到常规循环或使用dojo/_base/array
实用程序模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.