遇到一个相当有趣的问题。
以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等)。
我错过了一些非常明显的东西吗?
答案 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。 很奇怪。