我正在使用 dijit DropDownButton 和我正在开发的应用程序。如您所知,如果您单击一次按钮,则会出现一个菜单。再次单击它会消失。我似乎在 API 文档中找不到这个,但是我可以读取一个属性来告诉我 DropDownButton 当前是打开还是关闭?
我试图在 DropDownButton 的 OnClick 事件上使用 dojo.connect 侦听器以执行另一个任务,但前提是单击“关闭”DropDownButton。
谢谢你!史蒂夫
我有一个类似的问题。我也找不到这样的属性,所以我最终添加了一个自定义属性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,因为您没有指定版本。当然,它可以很容易地转换为其他版本。