3

かなり興味深い問題に遭遇します。

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

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

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

javascriptを直接(クレートをバイパスして)または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など)を使用します。

私は非常に明白な何かを逃していますか?

4

3 に答える 3

3

試してみてください:

(-> (jquery "body")         
  (.append (crate/html [:h1.red "Test inside a jquery"]) ))))
于 2012-03-20T08:19:43.527 に答える
1

関数呼び出しは副作用のためだけのものであるため、遅延評価が問題にならないようにする必要があります。

(doto (jquery "body")
  (.append (crate/html [:h1{:class "red"} "Test inside a jquery"])))
于 2012-03-20T23:57:38.537 に答える
0

根本的な問題は、アプリに「get」という関数があったことでした。

(defn get [])

これはclojure.core/getと競合している可能性があります。

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

于 2012-03-21T03:14:20.263 に答える