1

我是 clojurescript 的新手,我的任务是通过单击加号图标来创建一个具有切换列表项要求的过滤器。我已经编写了 css 来在类处于非活动状态时隐藏并在它处于活动状态时显示。我只想知道如何使用 clojurescript 或 om-next 在单击时切换类的正确语法。

或者有什么方法可以在单击兄弟/其他元素(h3)时切换(清空/填充)列表数组。

我试过这样的事情。

[:h3 (:name aggregation) {:on-click #(swap! :className "dInline" "dNone")}]

这是实际的代码。

(defn render-aggregation
    [{navigation-dimension :field :as aggregation} toggle-expanded rendered-filters]
        (let [show-expanded? (> (count (:values aggregation)) 8)]
            [:li {:key (str "k-" navigation-dimension)}
                 [:h3 (:name aggregation)]
                     (cond-> (into [:ul.list-unstyled] rendered-filters)
                         show-expanded?
                         (conj [:li
                             [:button.btn.btn-default.btn-xs {:on-click (toggle-expanded aggregation)}
                                 (if (:ui/expanded? aggregation) "show fewer" "show more")]]))]))

实际结果是 h3 元素应在单击时将其类更改为“dNone”

4

1 回答 1

0

我可以想到两种利用 vanilla JS 的解决方案:

  1. 您可能会发现答案很有帮助。它要求元素(你的 h3)有一个 ID。
  2. 如果您没有 ID,您可能需要使用 JavaScript 的this关键字,这显然可以从 ClojureScript 访问(请参阅此处

我已经在我的一些练习代码中成功地使用了方法 #1,但是我对 ClojureScript 和 Web 开发一般来说还是很陌生……请小心处理我的答案。

干杯

奥利弗

于 2019-12-05T10:16:51.987 回答