ホームページ > ウェブフロントエンド > jsチュートリアル > jQuery と他のライブラリ間の競合を迅速に解決する方法の紹介_jquery

jQuery と他のライブラリ間の競合を迅速に解決する方法の紹介_jquery

WBOY
リリース: 2016-05-16 17:05:57
オリジナル
1011 人が閲覧しました

jQuery と他のライブラリを同じページで使用する場合、グローバル名 $ の定義が最大の競合点と競合点になることがよくあります。 jQuery が $ を jQuery 名のエイリアスとして使用し、jQuery が公開するすべての機能に使用することはよく知られていますが、他のライブラリ、特に Prototype も $ 名を使用します。

1. jQuery は、$ 識別子の占有を放棄して他のライブラリが使用できるようにする $.noConflict() ユーティリティ関数を提供します。

この関数の構文は次のとおりです:
$.noConflict(jqueryToo)

識別子 $ の制御を他のライブラリに返し、jQuery をページ上の他のライブラリと混合できるようにします。関数が実行されたら、$identifier の代わりに jQuery 識別子

を使用して jQuery 関数を呼び出す必要があります。

jQuery 識別子を削除することもできます (オプション)

このメソッドは、jQuery が組み込まれた後、競合するライブラリが組み込まれる前に呼び出す必要があります。


jQuery 識別子が使用されていますが、$ は jQuery のエイリアスであるため、$.noConflict() 適用後もすべての jQuery 関数が使用可能です。

var $j = jQuery;

など、短くても競合しない jQuery エイリアスを定義できます。

2. もう 1 つの一般的な手法は、$ 識別子が jQuery オブジェクトを指すスコープ環境を作成することです。これは、特にプラグイン作成者にとって、jQuery を拡張する際の一般的な手法です。ページ開発者が $.noConflict() を呼び出したかどうかについての仮定はありません。もちろん、ページ開発者の希望を台無しにすることを避けるために、ページ開発者自身がこの関数を呼び出すことはできません。

このイディオムは次のとおりです:
(function($) { }) (jQuery);
(function($) { })

この部分は関数を宣言し、それを括弧で囲みます。これにより、この式の結果は匿名関数への参照になります。この関数は単一のパラメーターを想定し、関数本体内で $ という名前を付けます。関数に渡される値は、$ 識別子を通じて参照できます。パラメータ宣言はグローバル スコープ内の同様の名前付き識別子よりも優先されるため、関数の外で定義された $value は関数内で渡されたパラメータに置き換えられます。

(jQuery)

jQuery オブジェクトをパラメータとして渡し、匿名関数で関数呼び出しを実行します


$ 識別子が Prototype で定義されているか、関数の外部の他のライブラリで定義されているかに関係なく、常に関数本体内の jQuery オブジェクトを指します。

このトリックを使用する場合、外部で宣言された $ は関数本体内では使用できません。

3. 2 番目の使用法のバリエーションは、ready ハンドラー関数の宣言にもよく使用され、3 番目の構文
jQuery( function($){
})

既に $.noConflict() を使用しているページで使用される可能性のある再利用可能なコンポーネントを作成する場合は、$ の定義でこの予防措置を講じることが最善です。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート