Drupal 7およびjQuery —ドル記号


18

jQuery以外のJSライブラリを使用する予定がない場合、jQueryのエイリアスとして$を削除するjQuery.noConflict()へのDrupalの呼び出しが必要な理由はありますか?

$エイリアスを削除する必要がないと仮定すると、jQueryコードを常に(function($){...})でラップすることなく、普遍的に戻すことができる方法はありますか?

回答:


11

私が思いついた解決策はこれです:

カスタムテーマに含める最初のJSファイルの先頭に、次の行を追加します。

$ = jQuery;

完了:)


笑、ありがとう!jQueryが定義された理由を理解しようとしていました$が、定義されていませんでした。そのスニペットをモジュールに作成する必要があります:D
CamelBlues

それを行うvar $ = jQuery;
commonpike 14年

6

いいえ、できません(まあ、おそらくできますが、できません)。

ある時点で、モジュールは別のサイトの別のプロジェクトで使用され、そのサイトは別のJSライブラリを使用します(作成するすべてのdrupalモジュールは自動的にGPLであり、クライアントは任意の方法で使用できます)。

これらの2行をすべてのjsファイルに追加することはそれほど複雑ではありません:)


同意する; 互換性のために、DrupalでjQueryのエイリアスとして$を使用せず、常にjQueryを使用してJavaScriptコードをラップすることをお勧めし(function($){…})ます。
キアムルノ

その時点で、モジュール内ですべての$をjQueryに変換するために、単に検索と置換を行うことは難しくありません。
maxedison

@maxedison PHPとJavaScriptを混在させるとどうなりますか?JavaScriptによって操作されるテキスト文字列にドル記号を使用しますか?

1
質問者が「仮定する」ことを完全に無視しました。これは有効な質問であり、特にサードパーティのプラグインを埋め込む場合には、これらのファイルをすべて編集して$なしで機能させる必要があり、更新するたびに行う必要があります。Find and Replaceは、より複雑なプラグインでも機能しません。これは、グローバルスコープにする必要があるためです。修正が必要です。

私はインターネットで「$()を使用するたびに、神は子猫を殺します」というフレーズを作り出そうとしています。どうぞ-子猫について考えてください。
aendrew

0

これらの種類の質問にモジュールを使用する傾向がある場合、これも可能な解決策になる可能性があります。

jQuery Dollar

このモジュールを使用すると、開発者は$を使用してjQueryを明示的に呼び出したり、Drupal 7の特別なクロージャーを使用する代わりに、jQueryライブラリにアクセスできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.