使用lift,如果我们想要替换某些DOM的内容,如果我们知道DOM的ID,我们可以使用SetHtml
:
SetHtml(domID, Text("new text"))
但是SetHtml
只接受id
,如果我想按类找到DOM会怎么样?
SetHtml(".message", Text("new message"))
它当然不起作用,我现在该怎么办?
答案 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
}