2012-05-24 3 views
0

Я создаю динамическое контекстное меню, и, как ожидается, я хочу, чтобы меню было закрыто, когда мышь покидает окно меню. Я использовал:onMouseOut onMouseLeave событие не запускается для контекста Меню

var dlg = new dijit.Menu({     
     onMouseLeave: function(event){ 
     dijit.popup.close(dlg); 
    } 
}); 

Но когда я выхожу из коробки, ничего не происходит. Если я помещаю ту же функцию внутри MenuItems, то, когда я покидаю окно MenuItem, он закрывает окно.

Любые комментарии?

ответ

2

Это было бы потому, что dijit.Menu не регистрирует onMouseLeave на своем domNode.

Чтобы сделать это вручную, следуя все, что вам нужно: (нету пробы тест, хотя должен работать)

var myconnects = [] 
var dlg = new dijit.Menu({     
    destroy: function() { // for a neat garbage collections, remove listeners 
     var ch; 
     while(ch = myconnects.pop()) ch.disconnect(); 
     this.inherited(); 
    } 
    ... 
}); 
myconnects.push(dojo.connect(dlg.domNode, "onmouseleave", dojo.hitch(dlg, function() { 
    dijit.popup.close(this); 
}); 
+0

@ mschr: Вы фантастичны. – user1372020

+0

Замечательное решение. Спасибо за отличный ответ !!!!!! – hewstone

+0

рад быть полезным :) – mschr

Смежные вопросы