Kotlin获得了jquery点击的目标

elo*_*loo 5 kotlin

如果我写下一个代码我得到编译器错误:"未解析的refrence:target"

jq("#element").click {
    console.log(it.target)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我只打印"它"它具有属性目标

r.Event {originalEvent: MouseEvent, type: "click", target: button, currentTarget: button, relatedTarget: null…}
Run Code Online (Sandbox Code Playgroud)

那么我如何获得目标呢?

Rus*_*lan 3

我想您使用jq的是标准库,首先jq标准库已被弃用。

然后我们看一下clickhandler的定义:

public fun click(handler: (MouseClickEvent) -> Unit): JQuery
Run Code Online (Sandbox Code Playgroud)

如您所见,it在您的情况下是MouseClickEvent. 但 且MouseClickEventMouseEvent包含target.

您可以为 jquery 编写自己的绑定:

import jquery.MouseClickEvent
import jquery.MouseEvent

@JsName("$")
public external fun jq(selector: String): JQuery

public external class JQuery() {
    public fun click(handler: (ExtendedMouseClickEvent) -> Unit): JQuery
}

public external class ExtendedMouseClickEvent() : MouseEvent {
    public val target: JQuery
    public val which: Int
}

fun main(args: Array<String>) {
    jq("#element").click {
        console.log(it.target)
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,您还可以将 TypeScript 的现有定义转换为 kotlin。

jQuery 类型:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/jquery

ts2kt: https: //github.com/Kotlin/ts2kt