1、$符号的由来

$符号本质就是函数的名字。

jquery源码分析

通过分析我们知道,在jquery里边不只可以使用$符号,还可以使用jQuery标志

解决冲突问题

有的项目是中间过渡项目(prototype和jquery框架都有使用)

  • prototype框架也使用$符号
  • jquery里边也使用符号现在就分不清楚符号到底是prototype框架的 还是 jquery框架的

jquery本身有方法可以是的$符号的使用权被让出来

jQuery.extend({
noConflict: function( deep ) {
//使用一个空变量_$,把$符号给覆盖
window.$ = _$; if ( deep ) {
//使用一个空变量_jQuery把jQuery使用权收回
window.jQuery = _jQuery;
} return jQuery;
},
<script>
//通过jquery指定方法让出$符号的使用权
//被让出使用权的$符号,就不能出现在jquery的应用里边
//var jq = $.noConflict(); //收回$符号使用权
var jq = $.noConflict(true); //"$符号"和"jQuery"两个使用权都被收回 function f1(){
//alert($("div").html());
//alert(jQuery("div").html());
console.log(jq("div").html());
console.log(jQuery("div").html()); //不允许使用jQuery
}
</script>
<body>
<div>I am bread</div>
<input type="button" value="触发" onclick="f1()" />
</body>

2、jQuery对象与dom对象的区别和联系

  • jquery对象——$(“li”)
  • dom对象——document.getElementById(‘one’);

1. jquery对象创建过程中如何封装dom代码

结论:$(“#one”)[0] = document.getElementById(‘one’);

2. jquery对象转化为dom对象

a) jquery对象[下标] 例如 $(“#one”)[0]

//jquery对象调用dom对象的方法
$("#one")[0].setAttribute("class","pear");//说明jquery对象转化为了dom对象

在jquery对象里边获得指定的dom对象

$(“li”)多个节点

//jQuery 对象转换为Domd对象
$("li")[3].style.color ="red";

3. dom对象转换为jquery对象

a) var dv = document.getElementById(‘id’);

b) $(dv) 转化完毕

//$("#one").css('color','red');
//$("#one")就是对dom代码的封装(document.getElementById) //利用dom对象调用jquery的方法(失败)
var dv = document.getElementById("one"); //jquery封装dom代码(dom对象)
//$(dv) dv是div元素节点 nodeType=1(dom对象转化为jquery对象)
$(dv).css("color","green");

3、jquery对象分析

jquery对象创建:jQuery.fn.init(); (从105行——219行)

但是 css() html() attr() addClass()等方法在 100多行的init()里边没有具体的操作方法

下面来分析代码结构:

  • jQuery.fn 代码:104—338行
  • jQuery.fn.init 代码:105—219行
  • jQuery.fn.init.prototype = jQuery.fn;
  • jQuery.fn.init通过原型链继承jQuery.fn

jQuery.fn.init创建——>jQuery.fn.init 继承 ——> jQuery.fn (例如 length、jquery、size属性调用 ——> jQuery.fn 继承extend 冒充继承 (例如 addClass attr removeAttr)

jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {}
  • jquery对象创建完毕需要向上继承两层关系
  • jquery之所以会调用许多相关方法,也是继承得来的方法

jquery在使用的时候可以使用两种对象

  1. $(“#one”) 是普通jQuery.fn.init创建出来的对象
  2. $.get(“url”) 不是jQuery.fn.init创建,而是jquery内部的jQuery对象
  3. 例如: $.noConflict() $符号就是内部jQuery对象

该对象$,代码行数22—915行

$符号对象本身也有冒充继承,我们直接调用$符号的相关方法,首先去22-915行找,如果没有,就去extend继承方法里边找

系统里边有两套extend冒充继承:普通jquery对象的、$符号的

4、总结:

  • 1、 $符号由来
  • 2、 jquery对象与dom对象互相转化
  • 3、 jquery对象分析
    • a) jquery生成好的对象继承 jQuery.fn
    • b) jQuery.fn 通过冒充继承 extend,又得到了许多属性和方法

版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226

jQuery学习之旅 Item5 $与jQuery对象的更多相关文章

  1. jQuery学习之旅 Item10 ajax快餐

    1. 摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

  2. jQuery学习之旅 Item8 DOM事件操作

    1.jquery页面载入事件 1.传统加载事件 <body onload="函数名()"> 页面全部html和css代码加载完成之后再调用指定的onload函数 win ...

  3. jQuery 学习(1)——认识jQuery

    1.下载 下载地址:http://jquery.com/download/ jquery-3.2.1.js——用于开发和学习(229K) jquery-3.2.1.min.js——用于项目和产品(31 ...

  4. jQuery学习总结(一)——jQuery基础与学习资源

    前一段时间录了一套关于jQuery的视频分享给大家,可以在下载区下载到,本来想配合文字一起的,后面发现视频+帮助文档也是非常好的学习方法. 一.jQuery简介与第一个jQuery程序 1.1.jQu ...

  5. Jquery学习总结(1)——Jquery常用代码片段汇总

    1. 禁止右键点击 ? 1 2 3 4 5 $(document).ready(function(){     $(document).bind("contextmenu",fun ...

  6. jQuery学习之旅 Item4 细说DOM操作

    jQuery-–DOM操作(文档处理) Dom是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准 ...

  7. jQuery学习之旅 Item1 选择器【一】

    点击"名称"会跳转到此方法的jQuery官方说明文档. 1. 基础选择器 Basics 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择I ...

  8. jQuery学习笔记(一)--jQuery对象与DOM对象相互转换

    通过标准的JavaScript操作DOM与jQuyer操作DOM的对比,我们不难发现: 通过jQuery方法包装后的对象,是一个类数组对象.它与DOM对象完全不同,唯一相似的是它们都能操作DOM. 通 ...

  9. jQuery学习之旅 Item9 动画效果

    1.元素的显示和隐藏 display:none; 隐藏 display:block; 显示 简单显示和隐藏方法 a) show() 显示 b) hide() 隐藏 c) toggle() 开关,显示则 ...

随机推荐

  1. 二、添加 Insert into

    文档目录 开始使用  初始化查询实例: LambdaToSql.SqlClient DB = new LambdaToSql.SqlClient(); 添加实体数据 ", IP = &quo ...

  2. MySQL 菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  3. JMM

    1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓 ...

  4. 什么是shell? bash和shell有什么关系?

    什么是shell? bash和shell有什么关系? 博客分类: Linux   什么是Shell?      shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序 ...

  5. [转]web服务器压力测试工具

    http_load学习心得: 测试网站每秒所能承受的平均访问量(吞吐量) http_load -parallel 5 -fetches 1000 urls.txt这段命令行是同时使用5个进程,随机访问 ...

  6. 如何在不使用三大地图的KEY和相关组件的情况下,直接传参数到相关的H5地图

    以高德地图为例: window.location.href='http://m.amap.com/navigation/index/daddr=104.188206%2C30.858513%2C'+' ...

  7. Js 浅克隆详解

    浅克隆:不仅赋值,而且赋予了内存地址深度克隆:赋值,内存地址不同var a = [1,2,3]; var b = a; a = [4,5,6]; alert(b); //[1,2,3] 面试时被问到这 ...

  8. WebRTC MCU( Multipoint Conferencing Unit)服务器调研

    接触过的有licode.kurento. licode的缺陷:文档支持有限,licode的app client库只有js的 kurento的优势:文档齐全,Demo俱备,封装API比较齐全.它的主要特 ...

  9. 搭建centos7的开发环境2-单机版Hadoop2.7.3配置

    最近公司准备升级spark环境,主要原因是生产环境的spark和hadoop版本都比较低,但是具体升级到何种版本还不确定,需要做进一步的测试分析.这个任务对于大数据开发环境配置有要求,这里记录一下配置 ...

  10. JS中的top是什么?

    <iframe/>或者<frame>里面用主页面的东西,就是top.xxx如:<script> function func(){ ... };</script ...