Domanda

Sto cercando di nascondere un elemento nel clojursept in modo più specifico del dommy libreria.Questo è quello che sono arrivato finora:

CLOJUSCRITT:

(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>
.

Ma non ottengo risultati quando si apre il sito in un browser e non ho idea del perché:

È stato utile?

Soluzione

La cosa è che map restituisce una pigra sequenza di elementi.La sequenza pigra è una specie di promessa non realistica di ciò che puoi ottenere.Vuoi che la tua sequenza produca alcuni effetti collaterali.Per farlo funzionare devi solo renderlo conto.

Il problema è banale.Hai due scelte:

1) Realizza la tua sequenza pigra usando la funzione doall, in questo modo:

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

Questo è esattamente l'obiettivo di doall: cammina attraverso l'intera sequenza e forzare qualsiasi effetto possibile.

2) Utilizzare doseq che è destinato a produrre un effetto collaterale, in questo modo:

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

Ed è tutto!Entrambi i modi in cui dovresti ottenere lo stesso risultato.

Altre domande?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top