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

时间:2018-02-28 18:08:21

标签: elm

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

1 个答案:

答案 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