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 相关文章推荐
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
JS三目运算(三元运算)方法详解
Mar 01 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
微信小程序支付之c#后台实现方法
Oct 19 Javascript
JS实现的视频弹幕效果示例
Aug 17 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Python Numpy库安装与基本操作示例
2019/01/08 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Python简单基础小程序的实例代码
2019/04/28 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
毕业生个人求职的自我评价
2013/10/28 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
人事文员岗位职责
2014/02/16 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
法律专业求职信
2014/05/24 职场文书
提拔干部考察材料
2014/05/26 职场文书
代理人委托书
2014/08/01 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Python 如何安装Selenium
2021/05/06 Python