2

我是 Enlive 的新手。我发现我可以用 迭代clone-for,但是,它适用于单个元素。我想生成一对元素的列表,如下所示:

<div>
  <a href="url1">item 1</a><br>
  <a href="url2">item 2</a><br>
  ...
</div>

我尝试选择<a>和使用clone-for,但结果如下:

<div>
  <a href="url1">item 1</a><a href="url2">item 2</a>......<br>
</div>

在每次迭代中<a>我该怎么做才能重复?<br>

4

1 回答 1

3

我认为片段在这种情况下会起作用。

尝试以下方式:

(html/sniptest "<div><a href=\"url\">Label</a><br/></div>" {[:a] [:br]} 
  (clone-for [{label :label url :url} [{:label "Google" :url "http://www.google.com" }
                                       {:label "Stack Overflow" :url "http://www.stackoverflow.com"}]]
             [:a] (do-> (content label)
                        (set-attr :href url)))))
;; =>
<div>
     <a href="http://www.google.com">Google</a><br />
     <a href="http://www.stackoverflow.com">Stack Overflow</a><br />
</div>

如果您总是希望克隆 div 的全部内容(而不仅仅是片段:a -> :br),那么您可以使用first-childand last-child。只需将{[:a] [:br]}上面的选择器更改为{[:div first-child] [:div last-child]}.

于 2013-12-19T09:53:36.807 回答