jQuery对象初始化的传参方式


Posted in Javascript onFebruary 26, 2015

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 );
  }
};

以上就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
May 07 Javascript
JavaScript动态插入script的基本思路及实现函数
Nov 11 Javascript
js的alert样式如何更改如背景颜色
Jan 22 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
微信小程序缓存过期时间的使用详情
May 12 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
Sep 27 Javascript
Element Alert警告的具体使用方法
Jul 27 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 #Javascript
JS实现很酷的水波文字特效实例
Feb 26 #Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 #Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 #Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 #Javascript
使用jQuery获得内容以及内容的属性
Feb 26 #Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
Feb 26 #Javascript
You might like
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PDO::errorCode讲解
2019/01/28 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
质检部部长职责
2013/12/16 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers