当转到项目列表时,MouseOut事件在dijit.form.Select上触发

时间:2011-12-06 15:53:45

标签: events dojo

我决定接受下面的建议,并将我的问题重新设计得更简单。

我遇到的问题是我在自定义dijit中有一个dijit.form.Select dijit,它显示在onMouseOver上并隐藏在onMouseOut上。这是由于在打开Select并转到项目列表时触发了onMouseOut事件。这会导致onMouseOut事件触发并关闭我的自定义dijit。

我能想到的最好是因为Select继承自dijit._HasDropDown,而下拉片实际上是直接在body节点下而不是在dijit中创建的,因此它认为当鼠标放在那个部分时它已经离开并触发onMouseOut。

这真的是应该工作的方式,我只是做错了吗?我真的不知道如何让它工作,希望这更好,并会吸引更多的意见。

1 个答案:

答案 0 :(得分:0)

是的,onMouseOut事件发生在您的自定义小部件上,因为Select的下拉列表与dijit中的所有下拉列表一样,直接附加到。

一种方法:焦点管理器将设置this.focused你的小部件当小部件和它的后代,作为一个单元,获得/失去焦点。因此,当this.focused == true时,你甚至可以在你的小部件上忽略模糊。

然而,一个复杂的问题是,当下拉列表超出自定义窗口小部件的底部时,该怎么办。在这种情况下,单击下拉列表将关闭下拉列表,从而将光标放在自定义窗口小部件之外,但由于光标未跨越窗口小部件的边框,因此不会有onmouseout事件。也许这就是你想要的东西。