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实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
Jquery中Event对象属性小结
Feb 27 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
js随机生成一个验证码
Jun 01 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
Nov 29 Javascript
微信小程序图表插件wx-charts用法实例详解
May 20 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 Javascript
在nuxt中使用路由重定向的实例
Nov 06 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(1)
2006/10/09 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
详解JavaScript的BUG和错误
2018/05/07 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
基于python实现对文件进行切分行
2020/04/26 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
浅析python实现动态规划背包问题
2020/12/31 Python
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
酒店值班经理的工作职责范本
2014/02/18 职场文书
化学教育专业求职信
2014/07/08 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
土地租赁协议书
2015/01/29 职场文书
恰同学少年观后感
2015/06/08 职场文书
离婚财产分割协议书
2015/08/11 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server