最近、jquery の勉強を始めました。jquery ライブラリが$を実装する方法に戸惑い、jquery のソース コードを調べましたが、まだ理解できません。
$( "#xid" )がgetElementById("xid" )と同等なのはなぜですか?
jqueryのソースコードに従って$を説明していただけますか?
ありがとう。
最近、jquery の勉強を始めました。jquery ライブラリが$を実装する方法に戸惑い、jquery のソース コードを調べましたが、まだ理解できません。
$( "#xid" )がgetElementById("xid" )と同等なのはなぜですか?
jqueryのソースコードに従って$を説明していただけますか?
ありがとう。
は$
単に関数名です。簡単に説明すると、DOMセレクターを模倣しているだけです。
function $(selector)
{
if (selector[0] == "#")
return document.getElementById(substr(selector, 1));
else if (selector[0] == ".")
return document.getElementsByClassName...
else
return document.getElementsByTagName...
}
セレクターがのようなものである場合、#hello
はselector[0]
最初の文字を表し#
ます。この場合はです。は#
、要素のIDを示すために使用されます。同様に、.
はクラス名を示すために使用され、その他はタグ用です。それが明確であることを願っています。
jQuery は大まかに次のようにします。
if (the selector is a dom object){
wrap the dom object;
}
else if (the selector is a string){
if (it starts with `<` and ends with `>`){
assume this is HTML;
}else{
run a complex regex to classify the selector;
}
if (the selector is HTML){
create a new DOM element and return;
} else if (the selector is an ID selector and there is no context) {
use document.getElementByID;
} else {
if there is no context, use the jQuery root as the context;
jQuerify the context if neccessary and use context.find;
}
}
if (the selector is a function){
assume document.ready;
}
基本的に、それは特殊なケースを処理し、残りを$.fn.find
に委譲し、次に に委譲します$.find
が、ここで迷子になりました。
これはトリッキーなことです。パラメータ to$()
が「<」で始まらず、「>」を含まない文字列である場合、この正規表現と照合されます
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
#myid
結果の配列のようなIDの場合、
var match = ['#myid', undefined, 'myid']
したがってmatch[1]
、未定義になります。その場合、jQuery はすぐに評価しますgetElementById(match[2])
ソース: jQuery-1.7.1 コード
jQuery を定義/アクセスするための $ 記号。
つまり、
$ は、jQuery オブジェクトのエイリアスである変数として。
jQuery は、jQuery のショートカットとして $ 記号を使用します。
他の JavaScript ライブラリの中には、関数にドル記号を使用するものもあります。
jQuery の noConflict() メソッドは、ドル記号を使用する代わりにカスタム名 (jq など) を指定します。
次のリンクが役立ちます
document.getElementById('id'); //returns a HTML DOM Object
$('#id'); //returns a jQuery Object
document.getElementById()
ID セレクターの場合、jQueryは非常に効率的なJavaScript 関数 を使用します。h2#pageTitle などの別のセレクターが id セレクターにアタッチされている場合、jQuery は要素を一致として識別する前に追加のチェックを実行します。
$ は jQuery 関数を表し、実際には jQuery の略称です。(ほとんどの言語とは異なり、$ 記号は予約されておらず、変数名として使用できます。) 通常、セレクター (つまり、DOM で見つかった要素のセットを返す関数) として使用されます。