2012-03-20 12 views
3

かなり興味深い問題が発生します。jQueryが追加されたHTML要素は、crate&clj-jsを使用してCSSスタイルを取得しません

htmlとして生成され、jquery経由でページに挿入された要素は、割り当てられたスタイルを取得しません。

スタイルはHTMLにありますが、ブラウザ(Chrome、Firefox)はそれをまったく表示しません。

生成されたHTMLはブラウザ経由で保存することができ、開いたときにHTMLファイルにスタイルが適用されます。

javascript経由で直接生成される同じコード(クレートをバイパスする)またはclojurescript内の明示的なHTML文字列を使用して生成される同じコードも、正しいスタイルを持ちます。

クレートで生成された要素にのみ問題があるようです。

例えば:私はdefhtml同じ結果で、defpartial含むここクレートのいくつかのバリエーションを試してみました

.red { 
color:red; 
} 

:赤のクラスは、単純に定義されて

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

。 jayqまたはラップされていないjqueryを使用した場合と同じ結果になります。 同様に、異なるjqueryメソッド(inner、append、htmlなど)を使用します。

非常に明白なものがありませんか?

答えて

0

ことが判明根底にある問題は、私のアプリで「取得」と呼ばれる機能を持っていたことです。

(defn get []) 

clojure.core/get。

この機能を削除または名前を変更すると問題が解決され、CSSが正しく適用されます。 非常に奇妙です。

3

あなたが試すことができます:

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

同じことが適用されます。クラスは正しく生成され、ブラウザはまったくそれを拾わない。 –

1

あなたの関数呼び出しがちょうど副作用のためにあるので、あなたはその遅延評価が問題ではないことを確認する必要があります

(doto (jquery "body") 
    (.append (crate/html [:h1{:class "red"} "Test inside a jquery"]))) 
関連する問題