2013-01-08 50 views
0

我正在使用我正在开发的应用程序使用dijit DropDownButton。如您所知,如果您单击该按钮一次,会出现一个菜单。再次点击并消失。我似乎无法在API文档中找到它,但是有一个属性可以读取,告诉我我的DropDownButton当前是否打开或关闭?如何确定dijit下拉按钮的打开/关闭状态?

我想在DropDownButton的OnClick事件上使用dojo.connect监听器来执行另一个任务,但只有当DropDownButton被单击“关闭”。

谢谢! Steve

回答

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); 
}; 
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的,因为你没有指定你的版本。当然,它可以轻松转换为其他版本。

相关问题