0

我正在处理 jqueryUI 菜单小部件并出现错误行为。

查看以下代码片段和下面的菜单方案: 正如您所见,菜单已打开到第三级。我的意图是只需单击鼠标即可关闭整个第二个菜单项。所以我想点击“项目2”,所有对应的子项目都应该折叠(2.x,2.xx)。不幸的是,我目前必须在主菜单项上单击两次才能实现此目的。

项目 1

-- 项目 1.1

第 2 项

-- 项目 2.1

-- 项目 2.2

--- 项目 2.2.1

--- 项目 2.2.2

--- 项目 2.2.3

-- 项目 2.3

负责的功能结构如下:

 collapseAll: function (event, all) {
            clearTimeout(this.timer);
            this.timer = this._delay(function () {
                // If we were passed an event, look for the submenu that contains the event
                var currentMenu = all ? this.element :
                    $(event && event.target).closest(this.element.find(".ui-menu"));

                // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
                if (!currentMenu.length) {
                    currentMenu = this.element;
                }

                this._close(currentMenu);

                this.blur(event);
                this.activeMenu = currentMenu;
            }, this.delay);
      }

,

任何想法?

4

1 回答 1

0

我修复了这个错误。这种行为的原因不是 collapseAll 函数,而是从 this 调用的 close 函数。

使用此代码,它现在可以工作:

_close: function( startMenu ) {
    if ( !startMenu ) {
        startMenu = this.active ? this.active.parent() : this.element;
    }

    startMenu
        .find( ".ui-menu" )
        .hide()
        .attr( "aria-hidden", "true" )
        .attr( "aria-expanded", "false" )
        .end()
        .find( ".ui-state-active" )//.not( ".ui-state-focus" )
        .removeClass( "ui-state-active" );
},
于 2020-08-04T09:14:21.690 回答