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中常用的SET和GET$(”#msg”).html循环介绍
Oct 09 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
Apr 02 Javascript
javascript打开word文档的方法
Apr 16 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
使用Object.defineProperty实现简单的js双向绑定
Apr 15 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
深入理解node.js之path模块
May 03 Javascript
angularJs提交文本框数据到后台的方法
Oct 08 Javascript
微信小程序实现富文本图片宽度自适应的方法
Jan 20 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
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实现的CSS更新类实例
2014/09/22 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
详解vue-router基本使用
2017/04/18 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python 正则表达式实现计算器功能
2017/04/29 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python支付宝支付示例详解
2019/08/22 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
什么是Web Service?
2012/07/25 面试题
应届毕业生求职自荐书
2014/01/03 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
小学语文国培感言
2014/03/04 职场文书
春节联欢会主持词
2014/03/24 职场文书
出生公证委托书
2014/04/03 职场文书
高二学生评语大全
2014/04/25 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
银行先进个人总结
2015/02/15 职场文书
学校会议通知范文
2015/04/15 职场文书
商标侵权律师函
2015/05/27 职场文书
Docker下安装Oracle19c
2022/04/13 Servers
Python  lambda匿名函数和三元运算符
2022/04/19 Python