是否可以使用Dijit/ menu在Dijit中的特定位置插入菜单项?
Is it possible to insert a menu item at a specific position in Dijit using Dijit/Menu
我有一个菜单,其内容需要根据用户交互进行重大更改。这意味着需要引入一些新的菜单项,而有些则需要删除。查看一下Dojo发布的API文档,如果不删除现有项并从头重新创建菜单,似乎没有办法重做菜单的内容。
dijit/Menu
的getChildren()
方法返回一个数组,表明可能有一种相对简单的方法在特定的索引位置插入菜单选项。然而,不幸的是,我找不到一种方法将一组菜单项附加到dijit/Menu
中。
有人知道直接的方法(使用API)吗?
dijit/Menu
缺少一些相当主流的用例。我做了一个自定义实现,添加了我似乎一直想要的各种功能。其中之一是切换给定的菜单项。
我已经粘贴了我的"dijit/ContextMenu
"小部件(我的名字,不是他们的)在这里,但答案是不,你必须自己做。您可以根据需要动态添加/删除MenuItem
s,或者我所做的是在创建时注入它们,然后根据需要显示/隐藏:
[snip]
hideMenuItem :function(menuItemId){
var menuItems = this.getChildren();
for(var i=0; i < menuItems.length; ++i){
if(menuItemId === menuItems[i].id){
domStyle.set(menuItems[i].domNode, "display", "none");
break;
}
}
},
showMenuItem : function(menuItemId){
var menuItems = this.getChildren();
for(var i=0; i < menuItems.length; ++i){
if(menuItemId === menuItems[i].id){
domStyle.set(menuItems[i].domNode, "display", "");
break;
}
}
}
[/snip]
@gabriel建议的答案是我的起点,我注意到可以通过在menu . addchild中指定索引在特定位置添加菜单项。
addChild(widget,insertIndex)
我最终做的是一些不同的事情:
- 通过
menu.getChildren()
循环到我正在寻找的索引 - 删除菜单项(使用
removeChild
) - 添加新菜单项(使用
addChild
)
我不能使用insertIndex
,因为我的菜单有分隔符需要处理(叹气!)
相关文章:
- CSS-如何定位内容数据标题
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 在Jquery detachment()和appendTo()之后定位元素
- 困在逻辑中试图定位动态的东西
- Dojo:访问dijit.form.Select中单击的项目
- 绝对定位不适用于Javascript DIV
- Jquery定位代码并调用它
- 如何在容器中定位旋转的图像
- Highcharts-图表外的图例定位
- .scroll()函数在上次更新后在谷歌chrome中定位闪烁
- 如何在CSS或Javascript中定位选定的属性(在HTML选项中)
- 地理定位api和谷歌地图出错
- 在 jquery 中定位暂停和播放按钮
- 当定位模式设置为“0”时,总是达到关于地理定位的超时;仅设备”;
- 如何在定位导航后向下滚动页面
- stickyfloat无法处理绝对定位的元素
- Selenium无法在浏览器DOM中定位元素
- Chrome地理定位在更新后停止工作
- 如何定位DOM怪物错误
- 定位dojo dijit.form.DropDownButton的内容