jQuery对象初始化的传参方式
jQuery对象初始化的传参方式包括:
1.$(DOMElement)
2.$('<h1>...</h1>'),$('#id'),$('.class')传入字符串,这是最常见的形式,这种传参数经常也传入第二个参数context指定上下文,其中context参数可以为$(...),DOMElement
3.$(function(){});<===>$(document).ready(function(){});
4.$({selector:'.class',context:context})<===>$('.class',context)
jQuery.fn=jQuery.prototype={ constructor:jQuery, init:function(selector,context,rootjQuery){ varmatch,elem,ret,doc; //处理$(""),$(null),$(undefined),$(false)这几种参数,直接返回this if(!selector){ returnthis; } //当传参selector为DOM结点时,将context置为selector if(selector.nodeType){ this.context=this[0]=selector; this.length=1; returnthis; } //HandleHTMLstrings //当传入的selector参数为字符串时, if(typeofselector==="string"){ if(selector.charAt(0)==="<"&&selector.charAt(selector.length-1)===">"&&selector.length>=3){ //Assumethatstringsthatstartandendwith<>areHTMLandskiptheregexcheck match=[null,selector,null]; }else{ match=rquickExpr.exec(selector); } //Matchhtmlormakesurenocontextisspecifiedfor#id if(match&&(match[1]||!context)){ //HANDLE:$(html)->$(array) if(match[1]){ context=contextinstanceofjQuery?context[0]:context; doc=(context&&context.nodeType?context.ownerDocument||context:document); //scriptsistrueforback-compat selector=jQuery.parseHTML(match[1],doc,true); if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){ this.attr.call(selector,context,true); } returnjQuery.merge(this,selector); //HANDLE:$(#id) }else{ elem=document.getElementById(match[2]); //CheckparentNodetocatchwhenBlackberry4.6returns //nodesthatarenolongerinthedocument#6963 if(elem&&elem.parentNode){ //HandlethecasewhereIEandOperareturnitems //bynameinsteadofID if(elem.id!==match[2]){ returnrootjQuery.find(selector); } //Otherwise,weinjecttheelementdirectlyintothejQueryobject this.length=1; this[0]=elem; } this.context=document; this.selector=selector; returnthis; } //HANDLE:$(expr,$(...)) }elseif(!context||context.jquery){ return(context||rootjQuery).find(selector); //HANDLE:$(expr,context) //(whichisjustequivalentto:$(context).find(expr) }else{ returnthis.constructor(context).find(selector); } //HANDLE:$(function) //Shortcutfordocumentready //当selector为function时相当于$(document).ready(selector); }elseif(jQuery.isFunction(selector)){ returnrootjQuery.ready(selector); } //当selector参数为{selector:'#id',context:document}之类时,重置属性selector和context if(selector.selector!==undefined){ this.selector=selector.selector; this.context=selector.context; } returnjQuery.makeArray(selector,this); } };
以上就是本文的全部内容了,希望大家能够喜欢。