我决定接受下面的建议,并将我的问题重新设计得更简单。
我遇到的问题是我在自定义dijit中有一个dijit.form.Select
dijit,它显示在onMouseOver上并隐藏在onMouseOut上。这是由于在打开Select并转到项目列表时触发了onMouseOut事件。这会导致onMouseOut事件触发并关闭我的自定义dijit。
我能想到的最好是因为Select继承自dijit._HasDropDown
,而下拉片实际上是直接在body节点下而不是在dijit中创建的,因此它认为当鼠标放在那个部分时它已经离开并触发onMouseOut。
这真的是应该工作的方式,我只是做错了吗?我真的不知道如何让它工作,希望这更好,并会吸引更多的意见。
答案 0 :(得分:0)
是的,onMouseOut事件发生在您的自定义小部件上,因为Select的下拉列表与dijit中的所有下拉列表一样,直接附加到。
一种方法:焦点管理器将设置this.focused你的小部件当小部件和它的后代,作为一个单元,获得/失去焦点。因此,当this.focused == true时,你甚至可以在你的小部件上忽略模糊。
然而,一个复杂的问题是,当下拉列表超出自定义窗口小部件的底部时,该怎么办。在这种情况下,单击下拉列表将关闭下拉列表,从而将光标放在自定义窗口小部件之外,但由于光标未跨越窗口小部件的边框,因此不会有onmouseout事件。也许这就是你想要的东西。