0

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

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

谢谢你!史蒂夫

4

2 回答 2

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);
};
于 2013-02-20T15:47:47.500 回答
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,因为您没有指定版本。当然,它可以很容易地转换为其他版本。

于 2016-07-08T17:53:49.607 回答