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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
Aug 02 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
详解微信小程序调起键盘性能优化
Jul 24 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
小程序如何使用分包加载的实现方法
May 22 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
简单了解JavaScript sort方法
2019/11/25 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python多线程下载文件的方法
2015/07/10 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
numpy中的高维数组转置实例
2018/04/17 Python
python实现五子棋人机对战游戏
2020/03/25 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
南京某公司笔试题
2013/01/27 面试题
幼儿园教师岗位职责
2014/03/17 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
企业年检委托书范本
2014/10/14 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
导游词之镇江焦山
2019/11/21 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript