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

Dojo 如何确定dijit下拉按钮的打开/关闭状态?,dojo,status,Dojo,Status,我在开发一个应用程序时使用了dijit下拉按钮。如你所知,如果你点击按钮一次,就会出现一个菜单。再次单击,它将消失。我似乎在API文档中找不到这一点,但是否有一个属性可以告诉我DropDownButton当前是否打开或关闭 我试图在DropDownButton的OnClick事件上使用dojo.connect侦听器来执行另一个任务,但前提是单击DropDownButton“closed” 谢谢大家!! 史蒂夫我也有类似的问题。我也找不到这样的属性,因此我最终添加了一个自定义属性dropDownI

我在开发一个应用程序时使用了dijit下拉按钮。如你所知,如果你点击按钮一次,就会出现一个菜单。再次单击,它将消失。我似乎在API文档中找不到这一点,但是否有一个属性可以告诉我DropDownButton当前是否打开或关闭

我试图在DropDownButton的OnClick事件上使用dojo.connect侦听器来执行另一个任务,但前提是单击DropDownButton“closed”

谢谢大家!!
史蒂夫

我也有类似的问题。我也找不到这样的属性,因此我最终添加了一个自定义属性
dropDownIsOpen
,并覆盖
openDropDown()
closeDropDown()
以更新其值,如下所示:

myButton.dropDownIsOpen=false;
myButton.openDropDown=函数(){
this.dropDownIsOpen=true;
继承的(“openDropDown”,参数);
};
myButton.closeDropDown=函数(){
this.dropDownIsOpen=false;
继承的(“closeDropDown”,参数);
};

您可以通过它的CSS类来跟踪它。当下拉列表打开时,获取焦点(属性focusNode)的基础DOM节点将接收一个附加类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,因为您没有指定您的版本。当然,它可以很容易地转换为其他版本