【发布时间】:2021-09-19 12:12:17
【问题描述】:
尝试使用鼠标选择特定 HTML 元素内的多个元素,类似于用户在 Windows 资源管理器中选择多个文件和文件夹的方式。 Testedseverallibraries。一般来说,它们可以工作,但棘手的部分是每个可选元素内部都有一个复选框。
<div class="container">
<div class="selectable"><input type="checkbox" /></div>
<div class="selectable"><input type="checkbox" /></div>
<div class="selectable"><input type="checkbox" /></div>
</div>
要使用鼠标选择元素,每个库都会在container 中添加mousedown、mousemove、mouseup 事件处理程序,它仍然可以正常工作,如下面的代码笔中所示,mousedown 在container 上正常运行与复选框上的click 共存。
https://codepen.io/artemiusgreat/pen/eYWzrQb
显然,Blazor 不是这种情况,因为我在上面的 codepen 中具有相同的标记,相同的事件,但是一旦我使用 JS 互操作将mousedown 事件添加到container,@987654335 中的所有复选框@ 停止工作。无论有没有onclick,复选框都会显示为无效且不可点击。
<!-- Checkbox outside of container works fine -->
<input type="checkbox" @onclick=@(e => SelectCollection(e)) />
<div class="container"> <!-- Inner checkboxes work only if container doesn't have "mousedown" handler -->
<!-- Checkbox inside of container with Blazor "onclick" does NOT work -->
<input type="checkbox" @onclick=@(e => SelectCollection(e)) />
<!-- Checkbox inside of container does NOT work even if it doesn't have any handlers -->
<input type="checkbox" />
</div>
为什么???
【问题讨论】:
-
我不是程序员,但我认为编程很容易。数百年前,还有一个人在喊“为什么???”,而他仍在等待答案。