先來了解幾個jquery方法:
$("li") -> this -> jquery物件 ->
$("aaa") 的效果跟 $("")的效果是一樣的。
然後來看一下init方法,也就是新建jquery物件呼叫的方法:
jquery.fn = jquery.prototype = ;這時裡面的constructor指向會出問題,需要修正,person.prototype =
init:function(selector,context,rootjquery)
if ( typeof selector === "string" ) else
// $("#div1")通過id匹配元素,是在document中執行,不會傳入context,所以context為空,因此進入if語句
if ( match && (match[1] || !context) ) ;["li","li"] ->
rsingletag匹配單標籤的,$(""),$("")
if ( rsingletag.test( match[1] ) && jquery.isplainobject( context ) ) ) 針對這種情況的,context 為json物件。
for ( match in context ) }}
return this;
else
this.context = document;
this.selector = selector; //"#div"
return this;}
else if ( !context || context.jquery )
else
else if ( selector.nodetype )
else if ( jquery.isfunction( selector ) ) );$(document).ready(function(){});
return rootjquery.ready( selector );}
if ( selector.selector !== undefined )
return jquery.makearray( selector, this ); //傳入陣列和json物件時,比如:$(),$({})
//makearray把selector(類陣列)轉換成陣列(外部使用),當傳入第二個引數時(內部使用),就會轉換成jquery物件的形式。
},length:0, //匹配到的元素的長度,預設為0.
......
};加油!
自定義的init方法和重寫的init方法
自定義乙個init方法 必須以initwith開頭 person p person alloc init person p1 person new 也呼叫了系統的init方法或者是重寫的init方法 與上式等價 import person.h implementation person 重寫init...
jQuery的init都做了些什麼
初始化jquery物件,即jquery.fn.init物件 param selector 選擇器,可能是dom物件 html字串 jquery物件 函式或其他任意值。param context 選擇器選擇的範圍 param rootjquery document init function sele...
jQuery原始碼之init部分
jquery 的入口函式jquery.fn.init。jquery.prototype.init 常用的選擇器介面 空引數,這個會直接返回乙個空的 jquery 物件,即 物件 this document 把傳入的物件包裝成jquery物件 函式 function dom文件載入完成後,載入執行的。...