Jqueryの$ネーミング競合
3075 ワード
Jqueryでは、$はJQueryの別名であり、$を使用する場所はすべてJQueryで置き換えることができます.例えば、$('#msg')はJQuery('#msg')の書き方に等しいです.しかし、複数のjsライブラリを導入した後、別のjsライブラリでも$記号を定義すると、$記号を使用すると競合します.次に、2つのライブラリファイルjqueryを導入する.jsとprototype.jsを例に説明する.
1つ目のケース:jquery.jsはprototype.jsは、次のように導入されます.
この場合、私たちは自分のjsコードに次のように書きます.
$は常にjqueryで定義された$記号を表し、JQuery('#msg')と書くこともできる.hide();prototypeを使いたいならjsで定義されている$については、後で説明します.
2つ目のケース:jquery.jsはprototype.jsは、次のように導入されます.
この場合、私たちは自分のjsコードに次のように書きます.
$この時点で表されるprototype.jsで定義された$記号、jqueryを呼び出す場合.jsの工場選択関数機能は、全称表記のみとなります
まず、jsライブラリのファイル順序を最初に導入した場合、異なるjsライブラリで定義された$記号を正しく使用する方法について説明します.
一.JQueryを使うnoConflict()
この方法の役割はJqueryに$の所有権を放棄させ、$の制御権をprototypeに返すことである.js、jqueryのためです.jsは後に導入されるので、最後に$制御権を持つのはjqueryです.その戻り値はJQueryです.コードでメソッドを呼び出すと、$を使用してjqueryのメソッドを呼び出すことはできません.この場合、$はprototypeを表します.jsライブラリで定義された$です.次のようになります.
それ以来$はprototypeを表します.jsで定義された$,jquery.jsの$は使用できません.jqueryしか使用できません.jsで$のフルネームJQueryになりました.
二.カスタムJQueryの別名
最初の方法でJQueryを使ったと思ったらnoConflict()メソッド以降、JQueryフルネームしか使えないのが面倒な場合は、JQueryの別名を再定義することもできます.次のようになります.
それ以来$はprototypeを表します.jsで定義された$,jquey.jsの中の$は再使用できません.jqueyとして$jしか使用できません.jsのJQueryの別名です.
三.文ブロックを使用して、文ブロックでjqueryを使用します.jsで定義された$は、次のようになります.
または、次の文ブロックを使用します.
2番目にjsライブラリのファイル順序を導入する場合、jqueryをどのように使用するか.jsの$は、上記の文ブロックの方法を使用することもできます.たとえば、次のようにします.
このような文ブロックを使用する方法は非常に有用であり、jqueryプラグインを自分で書くときに、具体的な作業中に様々なjsライブラリをどのように順番に導入したのか分からないが、このような文ブロックの書き方は衝突を遮断することができるため、このような書き方を使用するべきである.
1つ目のケース:jquery.jsはprototype.jsは、次のように導入されます.
<script src="prototype.js" type="text/javascript"/>
<script src="jquery.js" type="text/javascript"/>
この場合、私たちは自分のjsコードに次のように書きます.
$('#msg').hide();
$は常にjqueryで定義された$記号を表し、JQuery('#msg')と書くこともできる.hide();prototypeを使いたいならjsで定義されている$については、後で説明します.
2つ目のケース:jquery.jsはprototype.jsは、次のように導入されます.
<script src="jquery.js" type="text/javascript"/>
<script src="prototype.js" type="text/javascript"/>
この場合、私たちは自分のjsコードに次のように書きます.
$('#msg').hide();
$この時点で表されるprototype.jsで定義された$記号、jqueryを呼び出す場合.jsの工場選択関数機能は、全称表記のみとなります
JQuery('#msg').hide()
まず、jsライブラリのファイル順序を最初に導入した場合、異なるjsライブラリで定義された$記号を正しく使用する方法について説明します.
一.JQueryを使うnoConflict()
この方法の役割はJqueryに$の所有権を放棄させ、$の制御権をprototypeに返すことである.js、jqueryのためです.jsは後に導入されるので、最後に$制御権を持つのはjqueryです.その戻り値はJQueryです.コードでメソッドを呼び出すと、$を使用してjqueryのメソッドを呼び出すことはできません.この場合、$はprototypeを表します.jsライブラリで定義された$です.次のようになります.
JQuery.noConflict();
// $('#msg').hide(), $ prototype.js $ 。
JQuey('#msg').hide();
それ以来$はprototypeを表します.jsで定義された$,jquery.jsの$は使用できません.jqueryしか使用できません.jsで$のフルネームJQueryになりました.
二.カスタムJQueryの別名
最初の方法でJQueryを使ったと思ったらnoConflict()メソッド以降、JQueryフルネームしか使えないのが面倒な場合は、JQueryの別名を再定義することもできます.次のようになります.
var $j=JQuery.noConflict();
$j('#msg').hide();// $j JQuery
それ以来$はprototypeを表します.jsで定義された$,jquey.jsの中の$は再使用できません.jqueyとして$jしか使用できません.jsのJQueryの別名です.
三.文ブロックを使用して、文ブロックでjqueryを使用します.jsで定義された$は、次のようになります.
JQuery.noConflict();
JQuery(document).ready(function($){
$('#msg').hide();// ready $ jquery.js $.
});
または、次の文ブロックを使用します.
(function($){
.....
$('#msg').hide();// jquery.js $.
})(JQuery)
2番目にjsライブラリのファイル順序を導入する場合、jqueryをどのように使用するか.jsの$は、上記の文ブロックの方法を使用することもできます.たとえば、次のようにします.
<script src="jquery.js" type="text/javascript"/>
<script src="prototype.js" type="text/javascript"/>
<script type="text/javascript">
(function($){
.....
$('#msg').hide();// jquery.js $.
})(JQuery)
</script>
このような文ブロックを使用する方法は非常に有用であり、jqueryプラグインを自分で書くときに、具体的な作業中に様々なjsライブラリをどのように順番に導入したのか分からないが、このような文ブロックの書き方は衝突を遮断することができるため、このような書き方を使用するべきである.