这个文档已经过时了吗? http://www.scala-js.org/doc/calling-javascript.html 似乎无法在 intellij 中得到正确的结果:
import org.scalajs.dom.html
import org.scalajs.dom
import org.scalajs.dom.raw.HTMLElement
import scala.scalajs.js
import js.JSConverters._
import fr.iscpif.scaladget.d3._
import fr.iscpif.scaladget.mapping._
import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import org.scalajs.jquery.jQuery
/**
* Created by IDEA on 31/10/15.
*/
@JSExport
object LearnD3 {
@JSExport
def main(div: html.Div): Unit = {
jQuery("#list > li").each((x, y) => y)
}
}
第一个 dom.HTMLElement 似乎不存在。有 org.scalajs.dom.raw.HTMLElement
,但即使我导入,也存在类型不匹配:
最佳答案
您需要指定参数的类型。以下代码有效:
val x = jQuery("#list > li").each((i: js.Any, y: Element) => y)
您可能会注意到,索引 i
的类型为 Any
,并且通常您希望索引的类型为 Int
。因为这类问题,jquery-facade诞生了:一个更强类型的 jquery 外观。我强烈推荐它。 jquery-facade 中的相同代码:
import org.querki.jquery._
...
val x = $("#list > li").each((y: Element, i: Int) => y)
或者,如果您不需要 i
索引:
val x = $("#list > li").each((y: Element) => y)
或者您希望推断 y
类型:
val x = $("#list > li").foreach(y => y)
关于javascript - 从 scala.js 调用 jquery .each 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483226/