我想在liftweb中选择所有<a>
类my
,并将其文字设置为???
:
val x = <div>
<a><span class="my">xxx</span></a>
<a class="my">yyy</a>
</div>
我试过了:
"a .my *" #> "???"
和
"a" #> (".my *" #> "???")
但两者都不起作用,因为他们都将x
转换为:
<div>
<a><span class="my">???</span></a>
<a class="my">???</a>
</div>
哪些不正确,他们应该只转换第二个<a>
。
什么是正确的代码?
答案 0 :(得分:2)
据我所知,使用Lift 2.5及更早版本没有直接的方法。我相信他们会增加对Lift 3更强大的绑定类型的支持,但是因为它还没有在这里你需要解决它。
由于您可以直接使用NodeSeq
右侧的CssSelector
,因此这样的内容可以让您完成您要执行的操作:
"a" #> { ns:NodeSeq =>
if((ns \ "@class").text == "my")
("* *" #> "???").apply(ns)
else
ns
}
答案 1 :(得分:0)
当我为另一个问题而战时,我再次阅读(https://www.assembla.com/wiki/show/liftweb/binding_via_css_selectors)并找到了解决方案。
只需使用
".my" #> ("a *" #> "???")
而不是
"a" #> (".my *" #> "???")
然后一切顺利