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 easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
jQuery.prop() 使用详解
Jul 19 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
分分钟玩转Vue.js组件(二)
Mar 01 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 Javascript
详解react、redux、react-redux之间的关系
Apr 11 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 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二维数组去重算法
2016/12/17 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python 格式化输出百分号的方法
2019/01/20 Python
python如何实现图片压缩
2020/09/11 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
学习党课思想汇报
2013/12/29 职场文书
伊索寓言教学反思
2014/05/01 职场文书
会计试用期自我评价
2014/09/19 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python