【问题标题】:using clojurescript with jquery?将clojurescript 与jquery 一起使用?
【发布时间】:2015-06-16 00:02:47
【问题描述】:

这是我想要做的,我可以用 jQuery 替换 Dom,但我不知道如何获取 Dom 值。真可惜。
Gist
这是我遵循的要点。
所以我问了原作者,但还没有回应。 PS:我只是想在浏览器中尝试一些cljs,所以我没有使用任何像jayq这样的lib。 我试过(.val "yes")之类的东西,但似乎是错误的。

(ns hello-world.jquerytest)
(enable-console-print!)
(def jquery (js* "$"))

(defn x []
  (-> 
    (jquery ".meat")
      (.html "yes")))

(jquery
  (fn []
    (x)
    (-> (jquery "li.numbers")
      (.html "pink")
      (.append "banana"))))

【问题讨论】:

  • .html 返回一个字符串。您可能想使用 clojure 的 doto。如果这解决了问题,请用一些很好的解释和参考自己回答。
  • 感谢您的提示,但不需要添加doto,只需像管道一样列出功能即可。

标签: clojure clojurescript


【解决方案1】:

这是我根据 Vanessa 的评论的回答 我试过了

(defn x []
  (->  
    (jquery ".meat")
    (.html)
    (println)))

它将打印我想要的值。 如果我使用doto 它会在我不想要的控制台中打印 #。

(defn x []
  (->  
    (doto
      (jquery ".meat")
      (.html)
      (println))))

【讨论】:

  • 您更改了代码。如果你想在最后使用.append 调用,那么你需要使用doto。在-> 中用一个单一的表单包装一个表单是没有意义的。它没有任何作用。
  • (defn y [] (doto (jquery ".meat") (.html) (println))) 我也绑定了这个,你的意思是我可以删除->。但是这个仍然打印#,我发现->似乎和doto做同样的动作
  • 您对使用-> 和doto 感到困惑。不用->就写出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多