jQuery系列 第二章 jQuery框架使用准备
第二章 jQuery框架使用准备
2.1 jQuery框架和JavaScript加载模式对比
jQuery框架的加载模式
1 <script> 2 window.onload = function () { 3 console.log("window.onload——1") 4 }; 5 window.onload = function () { 6 console.log("window.onload——2") 7 } 8 </script>
打印结果:window.onload——2
JavaScript的加载模式
1 <script src="jquery-3.2.1.js"></script> 2 <script> 3 $(document).ready(function () { 4 console.log("$().ready——1") 5 }); 6 $(document).ready(function () { 7 console.log("ready——2") 8 }) 9 </script>
打印结果:ready——1 ready——2
两种加载模式对比
2.2 jQuery框架解决冲突
在实际的开发中,我们的项目中可能需要用到并引入多个第三方框架,如果这些框架本身在设计的时候,没有命名空间的约束,那么库与库之间发生冲突将在所难免。
jQuery框架在设计的使用,使用闭包的形式在所有的代码都封装到一个立即调用函数中,对外仅仅提供了美元符号和jQuery作为框架的入口。
jQuery当中所有的操作都是使用美元符号或者是jQuery对象进行的。假如,我们在使用jQuery框架之前已经在页面的代码中用到了美元符号,那么这种情况下,我们再按照常规的方式使用jQuery就可能会发生错误。
为了避免这种情况的发生,jQuery框架使用noConflict方法,可以在使用之前把美元符号替换成其它的标识符,相当于是给jQuery对象换个其他的名字。
代码示例
1 <script src="jquery-3.1.1.js"></script> 2 <script> 3 var $ = "文顶顶"; 4 $(function () { 5 console.log("DOM加载完毕"); 6 }) 7 </script>
代码说明
如果直接执行上面的代码,那么会报错。
报错信息:Uncaught TypeError: $ is not a function
报错原因:美元符号被定义为字符串,jQuery框架中美元符号被覆盖。
解决冲突(给jQuery框架安排新的代言人)
1 <script> 2 //在$符号被定义之前使用noConflict方法来重新设置名称 3 var jq = $.noConflict(); 4 // $符号可能被定义为字符串或其他数据 5 var $ = "文顶顶"; 6 //解决冲突之后,使用新设置的名称来操作 7 jq(function () { 8 console.log("DOM加载完毕"); 9 }) 10 </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实例。
代码示例
1 <body> 2 <div class="box">我是div</div> 3 <script src="jquery-3.2.1.js"></script> 4 <script> 5 //通过DOM提供的api获取页面中所有class为box的标签 6 var oDiv = document.getElementsByClassName("box"); 7 console.log(oDiv); 8 //通过jQuery提供的方法获取页面中所有class为box的标签 9 var ojQueryObj = $("div"); 10 console.log(ojQueryObj); 11 </script> 12 </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]
代码示例
1 <body> 2 <div class="box">我是div</div> 3 <script src="jquery-3.1.1.js"></script> 4 <script> 5 //通过DOM提供的api获取页面中所有class为box的标签 6 var oDiv = document.getElementsByClassName("box")[0]; 7 //通过jQuery提供的方法获取页面中所有class为box的标签 8 var ojQueryObj = $("div"); 9 //DOM -> jQuery 10 console.log($(oDiv).html()); 11 //jQuery -> DOM 12 console.log(ojQueryObj.get(0)); 13 console.log(ojQueryObj[0]); 14 </script> 15 </body>
- Posted by 博客园·文顶顶 ~ 文顶顶的个人博客_花田半亩
- 联系作者 简书·文顶顶 新浪微博·文顶顶
- 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | 文顶顶

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JS异步与性能
一、背景 看了《你不知道的javascript》上卷以及中卷之后,总结一下js的event机制。 二、事件循环 JavaScript 引擎并不是独立运行的,它运行在宿主环境中,对多数开发者来说通常就是Web 浏览器。处理程序中多个块的执行,且执行每块时调用JavaScript 引擎,这种机制被称为事件循环。 先通过一段伪代码了解一下这个概念: // eventLoop是一个用作队列的数组 // (先进,先出) var eventLoop = [ ]; var event; // “永远”执行 while (true) { // 一次tick if (eventLoop.length > 0) { // 拿到队列中的下一个事件 event = eventLoop.shift(); // 现在,执行下一个事件 try { event(); } catch (err) { reportError(err); } } } 这里可以看到,有一个用while 循环实现的持续运行的循环,循环的每一轮称为一个tick。对每个tick 而言,如果在队列中有等待事件,那么就会从队列中摘下一个事件并执...
- 下一篇
我的第一个Java程序和Java简介
public calss HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!!"); } } 创建文件HelloWorld.java(文件名需和类名一致,不然编译不通过,编译器报错) javac Helloworld.java java HelloWorld Java是由Sun Microsystems公司于1995年推出的Java面向对象设计语言和Java平台的总称。由James Gosling和同事们共同研发,并1995年正式推出。 Java分为三个体系: JavaSE Java平台标准版 JavaEE Java平台企业版 JavaME Java平台微型版 2005年6月,javaone大会召开,sun公司工卡Java se 6。此时,Java的各种版本已经更名以取消其中的数字2,j2ee更名为Java ee,j2se更名为java se,j2me更名为Java ee。 主要特性 Java语言是简单的; Java语言的语法与C语言和C++语言很接近,是的大多数程序员...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 设置Eclipse缩进为4个空格,增强代码规范