2013-06-02 12 views
5

$("...")の代わりにjQuery("...")を書き込むことをお勧めしますか?

$も使用している場合、他のライブラリとの競合を避けるために役立つかもしれないと聞いたことがありますが、それは実際の懸念事項ですか?私が実際に使用する他のライブラリが何であるかわからないとしたら、スクリプトに$("...")と書くのは避けてください。 $にも頼っている他のよく知られているライブラリはありますか?

また、この件に他の問題が付いているかどうかを知りたいと思います。

+1

'.ready()'関数またはショートカットバージョンを使用している場合、 'jQuery(document).ready(function($){/ * $は安全です* /}); '(またはショートカットバージョンです)' jQuery(function($){/ * $は安全です* /}); '' .noConflict() 'や手動IIFEの方法は必要ありません。 –

+0

@CrazyTrainの説明に感謝します!答えとして投稿しますか? :) – Mahdi

+0

確かに、私はそれをすることができます。ちょっと待って。 –

答えて

5

jQueryのための$を使用することは完全に安全です。少なくとも、あなたがコントロールする自分のページでは、jQueryのイディオムです。

jQueryをウィジェットで使用する場合は、競合を避けるように構造化できます。一般のjQueryに

は)あなたはjQueryの$ .noConflitを(公開し紛争に関係している場合ので、一人ではjQueryを使用して..あなたはsafey

を保証するものではありません$とjQueryの両方に結合します。 http://api.jquery.com/jQuery.noConflict/

$の制御を放棄し、jQueryを任意の変数(またはjQueryを使用)に格納することができます。ここで

Wikipedia pageこのstackoverflow answerに基づいて$記号を使用したライブラリです:このページをスキャン

、頭に浮かぶ唯一のものは、次のとおりです。

  1. jQueryの - のjQueryを提供します$
  2. プロトタイプ
  3. MooToolsの
を解放する.noConflict()

しかし、jQueryは約90%の市場シェアでそれを殺しています。

  1. http://www.theregister.co.uk/2012/08/14/jquery_used_by_half_of_all_websites/
  2. https://stackoverflow.com/questions/176324/why-does-everyone-like-jquery-more-than-prototype-script-aculo-us-or-mootools-or
+0

ドリー、努力のおかげで! :) – Mahdi

+0

@マフディ喜んで:) –

2

$は頻繁に使用され、使用しない場合は他のライブラリイベントで使用される可能性があります。 jQuery.noConflictを使用できます。

多くのJavaScriptライブラリでは、関数名または変数名として$が使用されています.jQueryのように が使用されます。 jQueryの場合、$はjQueryのエイリアスなので、 $を使わずにすべての機能を利用できます。 別のJavaScriptライブラリをjQueryとともに使用する必要がある場合は、$ backの制御を$ .noConflict()を呼び出して他のライブラリに返します。 $の古い参照はjQueryの初期化時に保存されます。 noConflict()は単純にリストアします 、参照。

5

あなたはいくつかの他のライブラリが同様にドル記号を使用

(function (JQUERY, otherLIB) { 
    // ... 
}(jQuery, $)) 
1

したい売り呼び出し機能を使用してコードをラップし、名前を使用することができます。 Mootools for exampleでも使えます。しかし、常にjQuerys noConflictモードを使用する可能性があるので、コードではドル記号を安全に使用できます。

2

$は、jQueryが非常によく知られているため、簡略名前空間にすぎません。多くのJavaScriptフレームワークは、予約された名前空間として$を表示し、使用を躊躇しがちです。それは誰でも誰のためにもコードをwindow.$にネームスペースするのはとても簡単だと言いました。

$の名前空間が正確に何を指しているかを意識している場合は、その名前空間へのjQuerysバインディングを削除し、自分自身をグローバルスコープの外に再バインドすることができます。

jQuery.noConflict(); 

(function($) { 

    // your code that can use $ as jQuery namespace 

})(jQuery); 
2

あなたのコードをラップする.ready()機能(またはショートカットバージョン)を使用している場合は、あなたのjQueryライブラリへの安全なアクセスを与えることで構築された機能がすでにあります。それはあなたが提供するコールバックに関数パラメータを定義することによるものです。

jQuery(document).ready(function($) { 
    /* in here, $ is safe */ 
}); 

jQuery(function($) { 
    /* in here, $ is safe */ 
}); 

jQueryのコールバックへの最初の引数としての地位を通過するため、あなたはそれに$を含め、任意の名前を付けることができます。ローカルパラメータを形成するので、グローバル空間内の同じ名前には影響を受けず、同じ名前に影響しません。

この方法では、.noConflict()または手動IIFEアプローチの必要はありません。必要なものはすべて既にあなたのためにそこにあります。