onMouseOut onMouseLeave事件没有为上下文菜单触发

问题描述:

我正在创建一个动态上下文菜单,并且正如我期望的那样,当鼠标离开菜单框时我想要关闭菜单。我已经使用:onMouseOut onMouseLeave事件没有为上下文菜单触发

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

但是,当我走出方框没有任何反应。如果我在MenuItem中放入了相同的函数,那么当我离开MenuItem框时,它会关闭该框。

有何评论?

这可能是因为dijit.Menu没有在其domNode上注册onMouseLeave。

要手动做到这一点,下面是你需要:(还没有取样测试,虽然应该工作)

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