pingpang

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
          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 ) {
                  var match, elem, ret, doc;

                  // 處理$(""), $(null), $(undefined), $(false)這幾種參數,直接返回this
                  if ( !selector ) {
                      return this;
                  }

                  // 當傳參selector為DOM結點時,將context置為selector
                  if ( selector.nodeType ) {
                      this.context = this[0] = selector;
                      this.length = 1;
                      return this;
                  }

                  // Handle HTML strings
                  // 當傳入的selector參數為字符串時,
                  if ( typeof selector === "string" ) {
                      if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
                          // Assume that strings that start and end with <> are HTML and skip the regex check
                          match = [ null, selector, null ];

                      } else {
                          match = rquickExpr.exec( selector );
                      }

                      // Match html or make sure no context is specified for #id
                      if ( match && (match[1] || !context) ) {

                          // HANDLE: $(html) -> $(array)
                          if ( match[1] ) {
                              context = context instanceof jQuery ? context[0] : context;
                              doc = ( context && context.nodeType ? context.ownerDocument || context : document );

                              // scripts is true for back-compat
                              selector = jQuery.parseHTML( match[1], doc, true );
                              if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
                                  this.attr.call( selector, context, true );
                              }

                              return jQuery.merge( this, selector );

                          // HANDLE: $(#id)
                          } else {
                              elem = document.getElementById( match[2] );

                              // Check parentNode to catch when Blackberry 4.6 returns
                              // nodes that are no longer in the document #6963
                              if ( elem && elem.parentNode ) {
                                  // Handle the case where IE and Opera return items
                                  // by name instead of ID
                                  if ( elem.id !== match[2] ) {
                                      return rootjQuery.find( selector );
                                  }

                                  // Otherwise, we inject the element directly into the jQuery object
                                  this.length = 1;
                                  this[0] = elem;
                              }

                              this.context = document;
                              this.selector = selector;
                              return this;
                          }

                      // HANDLE: $(expr, $(...))
                      } else if ( !context || context.jquery ) {
                          return ( context || rootjQuery ).find( selector );

                      // HANDLE: $(expr, context)
                      // (which is just equivalent to: $(context).find(expr)
                      } else {
                          return this.constructor( context ).find( selector );
                      }

                  // HANDLE: $(function)
                  // Shortcut for document ready
                  // 當selector為function時相當于$(document).ready(selector);
                  } else if ( jQuery.isFunction( selector ) ) {
                      return rootjQuery.ready( selector );
                  }

                  // 當selector參數為{selector:'#id', context:document}之類時,重置屬性selector和context
                  if ( selector.selector !== undefined ) {
                      this.selector = selector.selector;
                      this.context = selector.context;
                  }

                  return jQuery.makeArray( selector, this );
              }
          }; 
          posted on 2012-08-16 22:39 往事隨風 閱讀(1808) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 麟游县| 禄丰县| 罗平县| 句容市| 浮山县| 克什克腾旗| 隆子县| 婺源县| 奉节县| 西安市| 吐鲁番市| 兴安盟| 黄山市| 姜堰市| 静安区| 前郭尔| 麟游县| 茂名市| 桂东县| 勃利县| 霸州市| 青浦区| 通渭县| 远安县| 偏关县| 吉木萨尔县| 专栏| 双流县| 张家川| 望城县| 达日县| 郓城县| 海原县| 灵寿县| 平邑县| 田东县| 九龙县| 青铜峡市| 玛曲县| 门源| 阿克苏市|