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);
});
@ mschr:你是太棒了。 – user1372020
精彩的解决方案。感谢您的好评!!!!!! – hewstone
很高兴已经服务:) – mschr