我正在使用我正在开发的应用程序使用dijit DropDownButton。如您所知,如果您单击该按钮一次,会出现一个菜单。再次点击并消失。我似乎无法在API文档中找到它,但是有一个属性可以读取,告诉我我的DropDownButton当前是否打开或关闭?如何确定dijit下拉按钮的打开/关闭状态?
我想在DropDownButton的OnClick事件上使用dojo.connect监听器来执行另一个任务,但只有当DropDownButton被单击“关闭”。
谢谢! Steve
我正在使用我正在开发的应用程序使用dijit DropDownButton。如您所知,如果您单击该按钮一次,会出现一个菜单。再次点击并消失。我似乎无法在API文档中找到它,但是有一个属性可以读取,告诉我我的DropDownButton当前是否打开或关闭?如何确定dijit下拉按钮的打开/关闭状态?
我想在DropDownButton的OnClick事件上使用dojo.connect监听器来执行另一个任务,但只有当DropDownButton被单击“关闭”。
谢谢! Steve
我有类似的问题。我无法要么找到这样的属性,所以我最终加入了自定义属性dropDownIsOpen
和压倒一切的openDropDown()
和closeDropDown()
更新它的价值,像这样:
myButton.dropDownIsOpen = false;
myButton.openDropDown = function() {
this.dropDownIsOpen = true;
this.inherited("openDropDown", arguments);
};
myButton.closeDropDown = function() {
this.dropDownIsOpen = false;
this.inherited("closeDropDown", arguments);
};
您可以通过其CSS类跟踪它。当DropDown处于打开状态时,获取焦点的基础DOM节点(属性focusNode)会接收到一个附加的类,dijitHasDropDownOpen。所以,针对你的情况:
// assuming "d" is a dijit.DropDownButton
dojo.connect(d, 'onClick', function() {
if (dojo.hasClass(d.focusNode, 'dijitHasDropDownOpen') === false) {
performAnotherTask(); // this fires only if the menu is closed.
}
});
这个例子是针对dojo 1.6.2的,因为你没有指定你的版本。当然,它可以轻松转换为其他版本。