这个文件过时了吗? 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,但是即使我导入也存在类型不匹配:

javascript - 从scala.js调用jquery .each方法-LMLPHP

最佳答案

您需要指定参数的类型。以下代码有效:

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)

08-03 17:26
查看更多