2016-05-06 4 views
1

Ajax、jQueryなどから始まります。私がここで愚かな間違いを犯している場合は、すみません。 私はPHP/JSを使用してウェブサイトを構築し、GoogleのマテリアルデザインcomportmentsとCSSを使用しています: - index.phpを、CSSへのリンクを持つメインページ(、次のとおりです。https://getmdl.io/components/MaterialDesign、JSビヘイビアがAjaxを通じて読み込まれたときに失われる

マイページがそのように構築されていますjsファイルなど) - 他のphpモジュール(いくつかの必要な部分だけを含む異なるPHPファイル)がロードされているdivが含まれています。

私の問題は、これらの読み込まれたページでは、マテリアルデザインクラスのすべての「特別な」動作が完全に失われてしまうことです(ボタンのリップル効果はなく、消えないテキストフィールドのラベルはテキストフィールドの内容などです)。 ..)。 CSSスタイルは良いです(材料デザインの色が表示され、視覚的なものはうまくいきます)が、クリックしたときの動作などはありません。

どのように修正できましたか? ありがとう!

答えて

3

jQueryギブスにダイビングした後に解決策が見つかりました。 AJAXを介してロードされたときにコンポーネントがDOMにアップグレードされていないようです。

次の呼び出しは、AJAXを使ってロードページに追加する必要があります。

componentHandler.upgradeDom(); 

例えば、関数呼び出しまたはajaxCompleteリスナーを介して、次のいずれかの

$('body').ajaxComplete(function() { 
     componentHandler.upgradeDom(); 
}); 
+0

勝利のために!まさに私が探していたもの。私はこれを理解するのに数時間を想定していました。私はjQueryをまったく使用していませんが、これは私のために働いていました。 AJAXを介してロードされたページには、Material Liteの処理が完全に行われていないため、このようなものだったと思われます。 – MarsAndBack

関連する問題