前端开发系列066-JQuery篇之框架使用准备
一、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 () {})
二、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>
三、jQuery对象和DOM对象的相互转换
DOM对象:每个HTML页面都是一个 DOM对象(Document Object Model
,文本对象模型),通过传统的JavaScript方法访问页面中的元素,就是访问 DOM 对象。
jQuery对象:在 jQuery框架中,通过本身自带的方法获取页面元素的对象,称为 jQuery 对象 ; ps: 其实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>
前端开发系列066-JQuery篇之框架使用准备的更多相关文章
- ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理
在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- leaflet-webpack 入门开发系列一初探篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- web前端开发学习:jQuery的原型中的init
web前端开发学习:jQuery的原型中的init 有大量web前端开发工具及学习资料,可以搜群[ web前端学习部落22群 ]进行下载,遇到学习问题也可以问群内专家以及课程老师哟 jQuery.fn ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- 前端开发 vue,angular,react框架对比1
转载自:https://www.cnblogs.com/hubgit/p/6633214.html 首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Mod ...
- [置顶]【实用 .NET Core开发系列】- 导航篇
前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...
- Android Metro风格的Launcher开发系列第三篇
前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...
- ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程
在前面随笔介绍的<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>里面,介绍了如何改进和完善审计日志和登录日志的应用服务端和Winform客户端,由于篇幅限制,没有进 ...
- ABP开发框架前后端开发系列---(16)ABP框架升级最新版本的经验总结
有一小段时间没有持续升级ABP框架了,最近就因应客户的需要,把ABP框架进行全面的更新,由于我们应用的ABP框架,基础部分还是会使用官方的内容,因此升级的时候需要把官方基础ABP的DLL进行全面的更新 ...
随机推荐
- 🎀杜伽Durgod K610W蓝牙连接问题解决
简介 杜伽Durgod K610W键盘支持三模连接,在配对成功蓝牙后切换连接通道后,再次连接蓝牙通道时无法正常自动连接已配对的蓝牙,需取消配对再重新配对后才能正常连接.这种问题可以通过升级键盘固件解决 ...
- 🎀Mybatis-Plus中的MetaObjectHandler
简介 MetaObjectHandler 是一个非常有用的组件,用于处理实体对象中的字段填充逻辑,比如自动填充创建时间.更新时间.创建人.修改人等字段. 组件介绍 MetaObjectHandler ...
- centos停服,迁移centos7.3系统到新搭建的openEuler
背景 最近在做的事,简单来讲,就是一套系统差不多有10多台虚拟机,都是centos系统,版本主要是7.3.7.6.7.9,现在centos停止维护了,转为了centos stream,而centos ...
- PHP获取一个月所有时间
$j = date("t"); //获取当前月份天数$start_time = strtotime(date('Y-m-01')); //获取本月第一天时间戳$array = ar ...
- 基于Cherry Studio + DeepSeek 搭建本地私有知识库!
在当今数字化时代,知识管理变得越来越重要.无论是个人还是企业,都希望能够高效地存储.管理和检索知识.而借助 AI 技术,我们可以实现更加智能的知识库系统.本文将详细介绍如何使用 Cherry Stud ...
- <HarmonyOS第一课09>应用程序框架进阶#鸿蒙课程##鸿蒙生态#
课程介绍 本课程<应用程序框架进阶>旨在深入探讨应用程序框架的核心概念和高级特性.课程首先介绍应用程序框架的基本概念,确保学员对框架有全面的认识.接着,我们将深入探讨AbilityStag ...
- MYSQL的API
1.函数的使用 常用函数(比较,分组,判断等) 截取函数:substring_index(目标字符串,分隔符,序号) 获取时间函数:TIMESTAMPDIFF(格式,开始时间,结束时间) 2.遇到的问 ...
- vue3 基础-data-methods-computed-watch
本篇来简单了解 vue 的数据, 方法, 计算属性和监听器等相关内容. data ( ) vue 里面的 data ( ) 函数返回一些能供模板 template 直接使用的数据, 以变量的方式进行 ...
- React并发机制揭秘
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- WPF之X名称空间详解
XAM简介: XAML是一种专门用于绘制UI的语言,借助它就可以把UI定义与运行逻辑分离开来.XAML使用标签来定义UI元素,每个标签对应.NET Framework类库中的一个控件类.通过设置标签的 ...