通过AJAX按类替换内容

时间:2013-05-11 10:52:37

标签: ajax lift

使用lift,如果我们想要替换某些DOM的内容,如果我们知道DOM的ID,我们可以使用SetHtml

SetHtml(domID, Text("new text"))

但是SetHtml只接受id,如果我想按类找到DOM会怎么样?

SetHtml(".message", Text("new message"))

它当然不起作用,我现在该怎么办?

3 个答案:

答案 0 :(得分:2)

如果你想使用scala jquery DLS,也许这样的东西会起作用吗?

JqJE.Jq(".class") ~> JqJE.JqHtml(Text(""))

这基本上构造了@DrHossein写的相同的js代码。此外,如果您愿意,可以使用JsCmds.Run("")并将所需内容作为原始文本内联。

答案 1 :(得分:0)

改为使用:

$(".somClass").html("new message");

答案 2 :(得分:0)

上述两个答案都适合你。另一种选择是使用上面建议创建自己的可重用JsCmd。这是Lift默认使用SetHtml

的代码
case class JqSetHtml(uid: String, content: NodeSeq) extends JsCmd {
  /**
   * Eagerly evaluate
   */
  val toJsCmd = (JqJE.JqId(JE.Str(uid)) ~> JqJE.JqHtml(content)).cmd.toJsCmd
}

因此,如果你想将它用于通用的html类,你可以做类似的事情:

case class JqSetHtmlByClass(className: String, content: NodeSeq) extends JsCmd {
  val toJsCmd = (JqJE.JqId(JE.Str(className)) ~> JqJE.JqHtml(content)).cmd.toJsCmd
}