web-dev-qa-db-ja.com

J2.5拡張機能でjqueryを使用する場合の最も一般的な未解決の問題

Joomla 2.5では、ページにさまざまな拡張機能があると、jqueryで問題が発生します。問題は、拡張機能の開発者として、j2.5拡張機能でjqueryをどのように使用するかということです。他の拡張機能でもjqueryファイルとjqueryの競合しないコードが宣言されており、気にしていない、または知らないで使用している開発者もいます。 jqueryは独自の方法なので、jqueryは拡張機能では機能しません。

今私はjfactory-> getapplication-> get( 'jquery')をチェックする必要がありますが、上で述べたように十分ではありません。したがって、jqueryを使用してjqueryスクリプトファイルを宣言する正しい方法は次のとおりです(上で述べたように、なぜ私は宣言する必要がありますか) -

  1. nc_mode = jQuery.noConflict(); nc_mode(function(){......});
  2. jQuery.noConflict(); jQuery(関数(){....});
  3. JQueryのみを使用-jQuery(function(){....});

拡張機能ではjqueryの使用が非常に一般的であるため、正しく解決する必要があります。

1
dev-m

noConflictは、関数の宣言時に使用されるエイリアスが他のライブラリと競合するようにするために使用されます。 Joomlaは$エイリアスとしてjQueryとの主要な競合問題を持つMootools(徐々にコアから削除されます)を使用して、次のような関数を宣言します。

$('button').click(function() { ...

noConflictをより深く、より深く理解するには、以下の説明を読んで、使用例も示します。

http://api.jquery.com/jquery.noconflict/

拡張機能でのjQueryのインポートに関しては、これは少しトリッキーです。以前の私の回答に対するコメントを見て、jQueryをインポートする方法がいくつかあることを十分に理解しています。その1つのインスタンスのみがインポートされることを保証することは可能ですが、いくつかの問題が発生する可能性があります。

自分のサイトでこれを行う場合は、プラグインである jQuery Easy を使用することをお勧めします。主な機能の1つは、jQueryの他のすべてのインスタンスを削除して、何度もインポートされないようにすることです。

開発者として一般に公開したい独自の拡張機能を作成する場合、この問題の調査は最初に行う必要があります。 jQueryがすでにロードされているかどうかを確認してからインポートすることは、他の拡張機能が質問で述べたのと同じ方法を使用している場合にのみ機能します。問題は、完璧なものは何もないことであり、一部の拡張機能が正しく記述されていて、他の拡張機能が正しく記述されていないという問題が常に発生するため、常に競合の可能性があります。これを回避するために私が実際に考えられる唯一の方法は、jQuery Easyのコードを調べて、jQueryの他のインスタンスを削除して自分でそれを試みる方法を確認することです。

更新

すべてのエイリアスとしてjQueryを使用する必要はありません。もちろん$を使用することに慣れていますが、実際にはjQueryがデフォルトのエイリアスです。すべてを回避する良い方法は、次のようにカプセル化することです。

jQuery.noConflict();

jQuery(document).ready(function($) {
    $("element").hide();
    // more code using $
});

今後は、$をローカルスコープのエイリアスとして使用できます。

2
Lodder