除了特定控件以外的任何地方检测点击的方法?

问题描述 投票:1回答:1

在我的应用程序中,用户可以单击div以突出显示它。有没有办法检测到他们点击了远离div的某个地方?当发生这种情况时,我想不要强调所选择的东西。我尝试将onclick添加到包含其他所有内容的大div中,但这并没有真正按预期工作。 IIRC on the big div onclick总是发生在包含的div onclick之后,所以你不能选择任何东西。

elm
1个回答
4
投票

你可以通过在div上添加一个“click”事件然后在内部div中,使用onWithOptions来阻止事件的传播。这是一些(未经测试的)代码:

onClickStop msg =
    onWithOptions "click"
        { stopPropagation = True, preventDefault = False }
        (Json.succeed msg)


view _ =
    div [ onClick Clicked ]
        [ div [ onClickStop NoOp ] []
        ]

当用户在嵌套div中单击时,将忽略该事件,并且将取消其传播到其父级。只有当用户点击内部div时,才会将Clicked消息发送到update

© www.soinside.com 2019 - 2024. All rights reserved.