2017-01-16 3 views
0

基本的な質問はありますが、まだ満足のいく回答は見つかりませんでした。私は、私は実際に行動の概念を理解していないことを認めなければならない。私が理解したことは、それが複数回(例えばajaxリフレッシュのために)発生することができるので、jQuery(document).readyのようにより柔軟であるということです。しかし、常に複数のjQueryファイルを扱うように、常にaspectedとして動作するわけではありません。Drupal 7 jQueryファイルを乗算したjQueryの動作

具体的な問題:Drupalサイトにjsファイルを乗算しました。いくつかはなどのフォーム、モジュール内のdrupal_add_js介して結合しているいくつかの、カスタムブロックに取り付けたいくつか、に添付 すべてのjsファイルは、次のようになり:

(function ($) { 
    Drupal.behaviors.THEMENAME = { 
    attach: function(context, settings){ 
      /* CODE */ 
     } 
    }; 
}(jQuery)); 

すべてが1つのjsファイルを除いて動作します(特定のページにありませんほとんどの場合は動作しますが、ノードページ[ページモジュールで構造化されていません])。

しかし、私はどのように振る舞いに名前を付けるのかは分かりません。彼らはすべて同じ名前か、異なっていなければなりませんか?名前(THEMENAME)を変更し、一意の名前(対応するモジュールなど)を指定すると、ほとんどのjはもう動作しませんが、特定のページでのみ動作するものはすべてのページで動作します。

どのようにすればいいですか?異なるjは依存関係がなく、ほとんどは単純なトグル表示、非表示、css操作です。

答えて

0

ビヘイビアはJavaScriptオブジェクトです。すべてのビヘイビアを同じ名前にすると、同じオブジェクトが何度も何度もオーバーライドされ、最後にロードされたビヘイビアだけが実行されます。あなたは、それぞれの異なる振る舞いに固有の名前を見つける必要があります。名前は何でもかまいません。私の推薦はあなたのテーマやモジュール名の前にすべて接頭辞を付け、次に彼らが何をするのかを最もよく表す短い名前を使用することです。

+0

しかし、これを行うと、私のjsファイルは、前に正常に動作しなかったファイル以外は動作しません。説明は?現在はもはや動作しないファイルはほとんどがカスタムブロックに含まれています '$ block ['content'] = array( '#attached' => array( 'js' => array( 'FILE.js' ) '、') ';'; ')' ;;;;;;;;;; またはフォーム経由で $ form ['attached'] ['js'] [] = array( 'type' => 'ファイル'、 'data' => FILE.js '、); ' – Mika

+0

別のjsスクリプトでフォルトが発生しました(https://www.drupal.org/node/1181562を参照)。ありがとうございました。今はすべて正常に動作します! – Mika

関連する問題