我试图隐藏 ClojureScript 中的一个元素,更具体地说是 多米 图书馆。这是我到目前为止得到的:

Clojure脚本:

(ns fucking_about                                                                  
  (:require                                                                        
    [dommy.utils :as utils]                                                        
    [dommy.core :as dommy])                                                        
  (:use-macros                                                                     
    [dommy.macros :only [node sel sel1]]))

(map dommy/toggle! (sel :.hide))

HTML:

<html>
<head><title></title></head>
<body>
    <ul>
        <li class="show">Derp</li>
        <li class="hide">Herp</li>
        <li class="show">ies!</li>
    </ul>
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

但是在浏览器中打开该网站时我没有得到任何结果,我不知道为什么:<并且我在 Github 页面之外找不到任何关于 ClojureScript 的文档。

有帮助吗?

解决方案

事情是这样的 map 返回元素的惰性序列。惰性序列是对你可以获得的东西的某种未实现的承诺。您希望您的序列产生一些副作用。为了让它发挥作用,你只需要意识到它。

问题是微不足道的。你有两个选择:

1)使用以下方法实现您的惰性序列 doall 函数,就像这样:

(doall (map dommy/toggle! (sel :.hide)))

这正是我们的目标 doall:遍历整个序列并强制任何可能的效果。

2)使用 doseq 这意味着会产生副作用,例如:

(doseq [el (sel :.hide)]
    (dommy/toggle! el))

就这样!这两种方法都应该得到相同的结果。

还有其他问题吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top