如何确定dijit下拉按钮的打开/关闭状态?

时间:2013-01-08 20:42:05

标签: dojo status

我正在使用dijit DropDownButton和我正在开发的应用程序。如您所知,如果您单击按钮一次,则会出现一个菜单。再次单击它会消失。我似乎无法在API文档中找到这个但是有一个属性我可以阅读告诉我我的DropDownButton当前是打开还是关闭?

我正在尝试在DropDownButton的OnClick事件上使用dojo.connect侦听器以执行其他任务,但前提是单击DropDownButton“关闭”。

谢谢! 史蒂夫

2 个答案:

答案 0 :(得分:0)

我有类似的问题。我找不到这样的属性,所以我最终添加了自定义属性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);
};

答案 1 :(得分:0)

您可以通过其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,因为您没有指定您的版本。当然,它可以很容易地转换为其他版本。