ホームページ  >  記事  >  ウェブフロントエンド  >  Jquery セレクター $implementation priority_jquery

Jquery セレクター $implementation priority_jquery

WBOY
WBOYオリジナル
2016-05-16 18:40:431219ブラウズ

しかし、仕事の都合上、長い間 Web サイトのプロジェクトを行っていなかったので、Jquery のソースコードを勉強する時間がありませんでした。今日、暇なときにこの質問を解決してみます。 Jquery のソースコードを開いて見てください。明日実装されます。原則として、jquery の js ファイルを追加すると、$ と JQuery 変数が初期化された関数が実際に実行されます。この機能の実装方法は次のとおりです (コードは削除および変更されており、実装原理の説明には影響しません):

コードをコピー コードは次のとおりです:

(function() {
var
// ウィンドウへの参照が高速化され、名前の変更が可能になります。
window = this,
// 未定義への参照が高速化され、その名前の変更が可能になります。
unknown,
// 上書きの場合は jQuery 上にマップします。
_jQuery = window.jQuery,
/ / 上書きの場合は $ をマップします。
_$ = window.$,
jQuery = window .jQuery = window.$ = function(selector, context) {
// jQuery オブジェクトは実際には単なるinit コンストラクター 'enhanced'
return new jQuery.fn.init(selector, context);
},
// HTML 文字列または ID 文字列をチェックする簡単な方法
// (両方)そのうち最適化します)
quickExpr = /^[^// 単純なセレクターですか
isSimple = /^.[^:#[.,] *$/;
jQuery.fn = jQuery.prototype = {
init: function(selector, context) {
// 選択が提供されたことを確認します
// 選択が提供されたことを確認します
selector = selector ||
this[0] = selector; this.length = 1;
this.context = セレクター;
show:function() {
alert("this.show"); },
// 空のセレクターから開始します
selector: "",
// 使用されている jQuery の現在のバージョン
jquery: "1.3.2"
}; jQuery.fn.init.prototype = jQuery.fn;
})();
関数テスト (src){
alert($(src)); );


コードから、そのような関数が実行されていることがわかります ( function(){})();

var window = this; window.jQuery;
_$ = window.$;
これらのコード行は、jQuery と $ 変数を宣言するためのものです。なぜこのように使用できるのかはわかりません。まだ出ていないので専門家が解決するのを待ちます! !

しかし、最も重要なのは次のコードなので、それは問題ではないと思います。

jQuery = window.jQuery = window.$ = function(selector, context) {
return new jQuery.fn.init(selector, context);
};

このように、jQuery.fn.init のような関数を作成すると、$ インスタンスが返されることがわかります。 jQuery.fn のメソッドにアクセスするには、次の文を追加する必要があります。

jQuery.fn.init.prototype = jQuery.fn;これらおよび Jquery のその他の関数は、プロトタイプまたは拡張でメソッドを追加するだけで理解するのは簡単です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。