在我的应用中,用户可以点击div来突出显示它。有没有办法检测到他们点击了远离div的某个地方?当发生这种情况时,我想要取消选中的东西。我尝试将onclick添加到包含其他所有内容的大div中,但这并不能真正按预期工作。 IIRC on the big div onclick总是发生在所包含的div onclick之后,所以你无法选择任何东西。
答案 0 :(得分:4)
您可以通过添加on"点击"将事件发送到div,然后在内部div中,使用onWithOptions
来阻止事件的传播。这是一些(未经测试的)代码:
onClickStop msg =
onWithOptions "click"
{ stopPropagation = True, preventDefault = False }
(Json.succeed msg)
view _ =
div [ onClick Clicked ]
[ div [ onClickStop NoOp ] []
]
当用户在嵌套div中单击时,该事件将被忽略,并且将取消其传播到其父级。只有当用户点击内部div时,Clicked
消息才会发送到update
。