我有一个与此类似的问题,但涉及Blazor。我有一个div,它的工作原理类似于一个弹出菜单,其中包含子元素,用户可以点击它来做一些事情。我希望当用户将鼠标从弹出div上移开时,弹出div会消失。我可以使用onmouseout事件,但问题是将鼠标移到弹出div中的子元素上会触发该事件。我希望onmouseout只有在鼠标移出父div时才会触发。到目前为止,我发现的唯一可行的解决方案是使用CSS设置";指针事件:无"关于子元素。但这也会禁用它们上的单击事件,我希望对此进行维护。Blazor不支持其他地方建议的带薪休假。
那么,如果div不是由其子元素触发的,我如何在Blazor中使用onmouseout事件呢?
更新:
Cory对在子元素上使用@onmouseout:previewDefault的回答确实有效。但是mouseout事件并没有可靠地启动。我成功地找到了一个解决方案,在显示弹出窗口时在div容器上设置类,并使用CSS onhover来隐藏和显示它,就像一样
这可能不对,但您不能在子HTML元素上使用@onmouseout:preventDefault
或@onmouseout:stopPropagation
吗?
当然,我还没有测试过,但这些都适用于所有Blazor事件:https://learn.microsoft.com/en-us/aspnet/core/blazor/components/event-handling?view=aspnetcore-5.0#防止默认操作
略有偏差,但这为我解决了问题:
代替:
onmouseover
onmouseout
我用过:
onmouseenter
onmouseleave
在我的情况下,这适用于我想要显示/隐藏卡片覆盖的用例。
<div class="template" onmouseenter="@this.MouseOver" onmouseleave="@this.MouseOut">