1

最近、jquery の勉強を始めました。jquery ライブラリが$を実装する方法に戸惑い、jquery のソース コードを調べましたが、まだ理解できません。

$( "#xid" )がgetElementById("xid" )と同等なのはなぜですか?

jqueryのソースコードに従って$を説明していただけますか?

ありがとう。

4

6 に答える 6

4

素早い回答

$単に関数名です。簡単に説明すると、DOMセレクターを模倣しているだけです。

function $(selector)
{
    if (selector[0] == "#")
        return document.getElementById(substr(selector, 1));
    else if (selector[0] == ".")
        return document.getElementsByClassName...
    else
        return document.getElementsByTagName...
}

セレクターがのようなものである場合、#helloselector[0]最初の文字を表し#ます。この場合はです。は#、要素のIDを示すために使用されます。同様に、.はクラス名を示すために使用され、その他はタグ用です。それが明確であることを願っています。

于 2012-10-30T07:26:26.873 に答える
1

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が、ここで迷子になりました。

于 2012-10-30T08:17:22.853 に答える
1

これはトリッキーなことです。パラメータ to$()が「<」で始まらず、「>」を含まない文字列である場合、この正規表現と照合されます

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/

#myid結果の配列のようなIDの場合、

var match = ['#myid', undefined, 'myid']

したがってmatch[1]、未定義になります。その場合、jQuery はすぐに評価しますgetElementById(match[2])

ソース: jQuery-1.7.1 コード

于 2012-10-30T08:19:30.863 に答える
0

jQuery を定義/アクセスするための $ 記号。

つまり、

$ は、jQuery オブジェクトのエイリアスである変数として。

jQuery は、jQuery のショートカットとして $ 記号を使用します。

他の JavaScript ライブラリの中には、関数にドル記号を使用するものもあります。

jQuery の noConflict() メソッドは、ドル記号を使用する代わりにカスタム名 (jq など) を指定します。

次のリンクが役立ちます

http://api.jquery.com/jQuery/

于 2012-10-30T08:26:13.200 に答える
0
document.getElementById('id'); //returns a HTML DOM Object
$('#id');  //returns a jQuery Object

document.getElementById()ID セレクターの場合、jQueryは非常に効率的なJavaScript 関数 を使用します。h2#pageTitle などの別のセレクターが id セレクターにアタッチされている場合、jQuery は要素を一致として識別する前に追加のチェックを実行します。

ソース

于 2012-10-30T07:27:41.520 に答える
0

$ は jQuery 関数を表し、実際には jQuery の略称です。(ほとんどの言語とは異なり、$ 記号は予約されておらず、変数名として使用できます。) 通常、セレクター (つまり、DOM で見つかった要素のセットを返す関数) として使用されます。

于 2012-10-30T07:27:57.820 に答える