如何在电梯中选择“a.my”作为jquery?

时间:2013-06-27 13:40:34

标签: scala css-selectors lift

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

什么是正确的代码?

2 个答案:

答案 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 *" #> "???")

然后一切顺利