我是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>
?
答案 0 :(得分:3)
我认为fragments适用于这种情况。
尝试以下几点:
(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-child
和last-child
。只需将上面的{[:a] [:br]}
选择器更改为{[:div first-child] [:div last-child]}
即可。