第二章 jQuery框架使用准备

    2.1 jQuery框架和JavaScript加载模式对比

jQuery框架的加载模式

 <script>
window.onload = function () {
console.log("window.onload——1")
};
window.onload = function () {
console.log("window.onload——2")
}
</script>

打印结果:window.onload——2

JavaScript的加载模式

 <script src="jquery-3.2.1.js"></script>
<script>
$(document).ready(function () {
console.log("$().ready——1")
});
$(document).ready(function () {
console.log("ready——2")
})
</script>

    打印结果:ready——1 ready——2

两种加载模式对比

① 监听时机不相同
 
window.onload方法需要等所有的资源(CSS\JS\图片等)都加载完毕后执行包裹代码。
jQuery框架的ready方法等DOM结构加载完毕后执行包裹代码。
 
② 执行次数不相同
 
window.onload方法,N次只会执行一次,后面的会把前面的覆盖。
jQuery框架的ready方法,N次会执行N次,不存在覆盖的问题。
 
③ 简写方式不相同
  

jQuery框架中的加载方式可以简写为:
$().ready(function () {})
$(function () {})

2.2 jQuery框架解决冲突

在实际的开发中,我们的项目中可能需要用到并引入多个第三方框架,如果这些框架本身在设计的时候,没有命名空间的约束,那么库与库之间发生冲突将在所难免。

jQuery框架在设计的使用,使用闭包的形式在所有的代码都封装到一个立即调用函数中,对外仅仅提供了美元符号和jQuery作为框架的入口。

jQuery当中所有的操作都是使用美元符号或者是jQuery对象进行的。假如,我们在使用jQuery框架之前已经在页面的代码中用到了美元符号,那么这种情况下,我们再按照常规的方式使用jQuery就可能会发生错误。

为了避免这种情况的发生,jQuery框架使用noConflict方法,可以在使用之前把美元符号替换成其它的标识符,相当于是给jQuery对象换个其他的名字。

代码示例

 <script src="jquery-3.1.1.js"></script>
<script>
var $ = "文顶顶";
$(function () {
console.log("DOM加载完毕");
})
</script>

代码说明

如果直接执行上面的代码,那么会报错。
报错信息:Uncaught TypeError: $ is not a function
报错原因:美元符号被定义为字符串,jQuery框架中美元符号被覆盖。

解决冲突(给jQuery框架安排新的代言人)

 <script>
//在$符号被定义之前使用noConflict方法来重新设置名称
var jq = $.noConflict();
// $符号可能被定义为字符串或其他数据
var $ = "文顶顶";
//解决冲突之后,使用新设置的名称来操作
jq(function () {
console.log("DOM加载完毕");
})
</script>

2.3 jQuery对象和DOM对象的相互转换

DOM对象:每个HTML页面都是一个 DOM对象(Document Object Model,文本对象模型),通过传统的JavaScript方法访问页面中的元素,就是访问 DOM 对象。

jQuery对象:在 jQuery框架中,通过本身自带的方法获取页面元素的对象,称为 jQuery 对象 ;

备注:其实jQuery本身只是个工厂函数,我们通常意义上所说的jQuery实例对象其实是jQuery的原型对象上面的init方法创建出来的实例对象。即 jQuery对象 = new jQuery.prototype.init() , 只是因为init方法和jQuery构造函数共用相同的原型对象,因此我们才会称init构造函数创建出来的对象为jQuery实例。

代码示例

 <body>
<div class="box">我是div</div>
<script src="jquery-3.2.1.js"></script>
<script>
//通过DOM提供的api获取页面中所有class为box的标签
var oDiv = document.getElementsByClassName("box");
console.log(oDiv);
//通过jQuery提供的方法获取页面中所有class为box的标签
var ojQueryObj = $("div");
console.log(ojQueryObj);
</script>
</body>

DOM对象和jQuery对象的转换

DOM对象可以理解为标签对象,我们在操作这些标签的时候,有很多标签自带的方法可以使用,如innerHTML、innerText属性,或者是appendChild方法等。

jQuery对象可以理解为jQuery初始化方法这个构造函数创建的实例化对象,因为它的原型对象为jQuery.prototype,因此所有的jQuery实例对象都可以访问jQuery原型对象上面的成员[属性或方法],如html、text方法等。

注意: DOM对象不能直接访问jQuery原型对象上面的成员,jQuery对象也不能直接访问标签对象上面的成员,如需访问则应该先进行转换。

DOM标签对象 -> jQuery实例对象 $(DOM标签对象)
jQuery实例对象 -> DOM标签对象 jQuery对象.get(index) | jQuery对象[index]

代码示例

 <body>
<div class="box">我是div</div>
<script src="jquery-3.1.1.js"></script>
<script>
//通过DOM提供的api获取页面中所有class为box的标签
var oDiv = document.getElementsByClassName("box")[0];
//通过jQuery提供的方法获取页面中所有class为box的标签
var ojQueryObj = $("div");
//DOM -> jQuery
console.log($(oDiv).html());
//jQuery -> DOM
console.log(ojQueryObj.get(0));
console.log(ojQueryObj[0]);
</script>
</body>

jQuery系列 第二章 jQuery框架使用准备的更多相关文章

  1. jQuery系列 第一章 jQuery框架简单介绍

    第一章 jQuery框架简单介绍 1.1 jQuery简介 jQuery是一款优秀的javaScript库(框架),该框架凭借简洁的语法和跨平台的兼容性,极大的简化了开发人员对HTML文档,DOM,事 ...

  2. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  3. 第二章 jQuery框架使用准备

    window常用属性: History:有关客户访问过的URL的信息 Location: 有关当前url的信息 常用方法: Confirm()将弹出一个确认对话框 open()在页面上弹出一个新的浏览 ...

  4. ActiveMQ 快速入门教程系列 第二章 发布-订阅者模式实现

    第二章我们会介绍怎样实现一个发布者对多个订阅者的消息传递 Topic和queue的最大区别在于topic是以广播的形式,通知所有在线监听的客户端有新的消息,没有监听的客户端将收不到消息:而queue则 ...

  5. jQuery系列 第八章 jQuery框架Ajax模块

    第八章 jQuery框架Ajax模块 8.1 jQuery框架中的Ajax简介 Ajax技术的核心是XMLHTTPRequest对象,该对象是Ajax实现的关键,发送异步请求.接收服务器端的响应以及执 ...

  6. 第二章 jQuery数组和字符串

    章节内容: 1.利用数组在列表中显示名字 (1)利用数组显示名字列表--join()方法 (2)从数组中获取名字并追加到有序列表--each()方法 (3)利用HTML元素创建数组和计算数组长度--g ...

  7. 第二章 jQuery选择器

    选择器是行为与文档内容之间的纽带,其目的是能轻松的找到文档中的元素. jQuery中的选择器继承了CSS的风格.利用jQuery选择器,可以非常便捷快速地找出特定的DOM元素,然后给它们添加相应的行为 ...

  8. 第二章 jquery的dom操作

    三个方面    dom核心,html-dom和css-dom 一. 1.dom core核心 document.getElementsByTagName("form")  获取表单 ...

  9. jQuery 第六章 jQuery在Ajax应用

    1.本章目标 ajax 2.ajax 异步刷新技术,我们的网页不需要全部刷新,按需实现局部刷新,上线后台的交互 用户体验好 地图,前台验证,表单提交,修改,查询等等 原生的js和ajax packag ...

随机推荐

  1. ELK学习笔记(三)单台服务器多节点部署

    一般情况下单台服务器只会部署一个ElasticSearch node,但是在学习过程中,很多情况下会需要实现ElasticSearch的分布式效果,所以需要启动多个节点,但是学习开发环境(不想开多个虚 ...

  2. 【SSH/SFTP】SSH协议和SFTP

    [SSH和SFTP] ■ 设置一个只允许访问部分目录的SFTP服务器 由于SSH和SFTP之间的紧密联系,一个SFTP服务器必然会导致开放一定的SSH服务,而SSH的风险显然比SFTP要大一些.自然, ...

  3. java排序算法(四):冒泡排序

    java排序算法(四):冒泡排序 冒泡排序是计算机的一种排序方法,它的时间复杂度是o(n^2),虽然不及堆排序.快速排序o(nlogn,底数为2).但是有两个优点 1.编程复杂度很低.很容易写出代码 ...

  4. [css 揭秘]:CSS揭秘 技巧(四):边框内圆角

    我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 边框内圆角 问题:有时候我们需要一个容器,只在内侧有圆角,而 ...

  5. java1.8版本的HashMap源码剖析

    一.摘要 以下分析内容均是基于JDK1.8产生的,同时也和JDK1.7版本的hashmap做了一些比较.在1.7版本中,HashMap的实现是基于数组+链表的形式,而在1.8版本中则引入了红黑树,但其 ...

  6. 网络1711班 C语言第七次作业批改总结

    网络1711班 C语言第七次作业批改总结 1.本次作业评分细则 1.1 基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1 ...

  7. 关于C语言的第0次作业

    1.你认为大学的学习生活.同学关系.师生关系应该是怎样的?请一个个展开描述. 我认为的大学学习生活是充实的,丰富多彩的,与高中快节奏.繁忙的生活有所不同.在上了大学我们都成熟了很多,懂得了包容与忍让, ...

  8. 201621123050 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...

  9. pandas 数据分析使用

    https://github.com/Erick-LONG/data_analysis/blob/master/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%20%E9%8 ...

  10. 基本数据类型 Symbol

    ES6 规范之前, JavaScript 一共有六种数据类型,分别是五种基本数据类型: string . number , boolean , null , undefined ,和一种引用数据类型: ...