mouseover/mouseout的Ext.toolbar隐藏打开menu

本文深入探讨了前端开发的关键技术和交互设计原则,包括HTML、CSS、JavaScript等核心语言的应用,以及如何利用Vue、React和Angular等框架提升用户体验。
/*!
 * Ext JS Library 3.2.1
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.onReady(function(){
    Ext.QuickTips.init();
    
   if(!!window.find){
        HTMLElement.prototype.contains = function(B){
         return this.compareDocumentPosition(B) - 19 > 0;
        };
   }
   
    var tb = new Ext.Toolbar();
    tb.render('toolbar');
      
    var menu = new Ext.menu.Menu({
        items: [{
                text: 'AAA',           
            },        
            {
                text: 'BBB',
            }
        ],
        listeners : {
               mouseout : function(obj,e){
                    if(!e.getRelatedTarget().contains(e.getTarget()) && !obj.getEl().contains(e.getRelatedTarget())){
                          obj.hide(obj);
                        }
                             else if(e.getRelatedTarget().contains(obj.getEl().dom)){
                                       obj.hide(obj);
                             }
               }
         }
    });
       

    tb.add({
            text:'Button w/ Menu',
            iconCls: 'bmenu',  // <-- icon
            menu: menu,  // assign menu by instance
            listeners : {
                    mouseover : function (obj,e)    {
                          if(!obj.menu.isVisible()){
                                obj.showMenu();
                            }
                    },
                    mouseout : function (obj, e){
                        if(!e.getRelatedTarget().contains(e.getTarget())&& !menu.getEl().contains(e.getRelatedTarget())){                 
                                            //下面这句if语句,是判断鼠标是否移动到子菜单上。
                                            
                                            var subHtml = Ext.get(e.getTarget()).dom.innerHTML;
                                            
                                            if (subHtml.indexOf("x-menu-focus") != -1
                                                    || subHtml.indexOf("x-menu-list") != -1
                                                    || subHtml.indexOf("x-menu-list-item") != -1
                                                    || subHtml.indexOf("x-menu-item") != -1){
                                               return;
                                            }
                    }
                           obj.hideMenu();
                }
                 
           }
        });
        
    tb.add({
          text:'test2',
                 listeners : {
                    mouseover : function (obj,e)    {
                          if(!obj.menu.isVisible()){
                                obj.showMenu();
                            }
                    },
                    mouseout : function (obj, e){
                        if(!e.getRelatedTarget().contains(e.getTarget())&& !obj.menu.getEl().contains(e.getRelatedTarget())){                 
                                            //下面这句if语句,是判断鼠标是否移动到子菜单上。
                                            
                                            var subHtml = Ext.get(e.getTarget()).dom.innerHTML;
                                            
                                            if (subHtml.indexOf("x-menu-focus") != -1
                                                    || subHtml.indexOf("x-menu-list") != -1
                                                    || subHtml.indexOf("x-menu-list-item") != -1
                                                    || subHtml.indexOf("x-menu-item") != -1){
                                               return;
                                            }
                    }
                           obj.hideMenu();
                }
                 
           } ,
          menu: new Ext.menu.Menu({
                            items: [{
                        text: 'AAA',           
                      }],
                            listeners : {
                                   mouseout : function(obj,e){
                                        if(!e.getRelatedTarget().contains(e.getTarget()) && !obj.getEl().contains(e.getRelatedTarget())){
                                              obj.hide(obj);
                                            }
                                                 else if(e.getRelatedTarget().contains(obj.getEl().dom)){
                                                           obj.hide(obj);
                                                 }
                                   }
                            }
              }),
    })
    tb.doLayout();
});
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值