附加jQuery的HTML元素不会使用crate& amp; CLJ-JS

时间:2012-03-20 06:08:31

标签: jquery clojure clojurescript

遇到一个相当有趣的问题。

以html格式生成并通过jquery插入页面的元素不会获取指定的样式。

该样式位于HTML中,但浏览器(Chrome,Firefox)根本不呈现它。

生成的html可以通过浏览器保存,打开时的HTML文件也可以应用样式。

通过javascript直接生成的相同代码(绕过crate)或使用clojurescript中的显式html字符串也具有正确的样式。

它似乎仅限于包装箱生成的元素。

例如:

(-> (jquery "body")         
  (.append (crate/html [:h1{:class "red"} "Test inside a jquery"]) ))))

红色类只定义:

.red {
color:red;
}

我在这里尝试了几种箱子,包括defpartial,defhtml和相同的结果。 使用jayq或非包装jquery的结果相同。 同样,使用不同的jquery方法(inner,append,html等)。

我错过了一些非常明显的东西吗?

3 个答案:

答案 0 :(得分:3)

你可以尝试:

(-> (jquery "body")         
  (.append (crate/html [:h1.red "Test inside a jquery"]) ))))

答案 1 :(得分:1)

由于您的函数调用仅用于副作用,因此您应该确保延迟评估不是问题:

(doto (jquery "body")
  (.append (crate/html [:h1{:class "red"} "Test inside a jquery"])))

答案 2 :(得分:0)

事实证明,潜在的问题是我的应用程序中有一个名为“get”的函数

(defn get [])

可能与clojure.core / get冲突。

删除或重命名此功能可以解决问题并正确应用CSS。 很奇怪。