"find"、"each" 方法抛出类型不匹配错误

"find", "each" method throw type mismatch error

我正在尝试使用 val x = $(selectState).find("option").each((y: Element) => y) 迭代选项。但是编译抛出以下错误。

type mismatch;
 found   : org.scalajs.dom.Element => org.scalajs.dom.Element
    (which expands to)  org.scalajs.dom.raw.Element => org.scalajs.dom.raw.Element
 required: scala.scalajs.js.|[scala.scalajs.js.ThisFunction0[org.scalajs.dom.Element,Any],scala.scalajs.js.ThisFunction1[org.scalajs.dom.Element,Int,Any]]
    (which expands to)  scala.scalajs.js.|[scala.scalajs.js.ThisFunction0[org.scalajs.dom.raw.Element,Any],scala.scalajs.js.ThisFunction1[org.scalajs.dom.raw.Element,Int,Any]]

我指的是堆栈溢出问题

好的,正式回答这个问题:是的,那是 jquery-facade 中的一个错误。感谢您指出!

正如我所怀疑的那样,问题是 | 类型运算符干扰了编译器自动将 Scala 函数转换为 JavaScript 函数的能力。所以它不理解 (y: Element) => y (Scala 函数)可以变成 JavaScript js.Function0[Element, Any].

所以我将 each 拆分为两个单独的重载,每个版本一个,这似乎可以按预期工作。请更新到 jquery-facade 1.0-RC3,我认为它应该适合你。