0

我想在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>.

什么是正确的代码?

4

2 回答 2

2

据我所知,使用 Lift 2.5 及更早版本没有直接的方法来做到这一点。我相信他们会增加对 Lift 3 绑定的更强大类型的支持,但由于它还没有出现,你需要解决它。

由于您可以直接使用NodeSeq右侧的CssSelector,因此这样的事情应该可以让您完成您想要做的事情:

"a" #> { ns:NodeSeq => 
  if((ns \ "@class").text == "my")
    ("* *" #> "???").apply(ns)
  else 
    ns 
}
于 2013-06-27T14:24:15.143 回答
0

当我为另一个问题而战时,我再次阅读了这篇文章(https://www.assembla.com/wiki/show/liftweb/binding_via_css_selectors)并找到了解决方案。

只需使用

".my" #> ("a *" #> "???")

代替

"a" #> (".my *" #> "???")

然后一切顺利

于 2013-07-07T07:31:23.107 回答