| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> js04--jQuery -> 正文阅读 |
|
[JavaScript知识库]js04--jQuery |
目录 2.3下拉与上滑: slideDown()和slideUp() 8 1.jQurey1.1jQurey历史官网: www.jquery.com 看见logo和slogan (口号) :写更少的代码,做更多的事情。 官网的自我介绍: jQuery is a fast, small, and feature- rich JavaScript library. (jQuery是一个快速、 小巧的、特点众多的JavaScript库。) It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. (它用自 己非常方便的跨浏览器API,使得诸如文档遍历、文档操作、事件监听、动画、和Ajax变得更简单。) With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript. (通过把多用途和高拓展性结合起来,jQuery改变了无数程序员书写JavaScript程序的方式。) jQuery的版本问题: jQuery的最 新版本是3.2.1,不兼容IE6、7、 8的。 学习的是jQuery1.12.3,兼容IE6、7、8的,更符合中国的实际情况。 jQuery3和jQuery1.12.3的API完全一样。 1.2使用jQueryjQuery的哲学是什么:简化DOM开发, 为兼容而生! jQuery简化了我们对DOM的开发,所以我们就有更多的精力,着眼于业务的书写。所以,从jQuery开始,我们需要练习写业务!写可靠的业务!代码量就要多起来了! jquery引包 jquery是 javascript的一个实用库,如果想要使用该文件,必须引入jquery才能使用里面各种各样的方法,引入jquery的时候需要注意,引入jquery的script标签要写在最前面 1.3体会jQuery简化获取元素的方式 简化元素的运动 jquery操作都是匹配的,不管是更改样式还是添加事件。以后几乎不会用到for循环 都是兼容IE的不用再进行能力检测了。并且都是得到的是计算后的样式。 jquery简化了DOM操作,比如添加,删除,更改节点。 1.4$() jquery是一个js语言书写一个js库。 全局只向外暴露了一个$()函数。 接收的是css选择器的参数。 返回的是一个jquery对象。jquery对象具有很多jquery对象的方法。 谁的方法谁调用: js对象→jquery对象直接加$() jquery对象→js对象直接书写索引值 ???????//jq对象转成js对象 ????????//jq对象是类数组对象,通过下标可以获取js对象 ????????div[0].innerHTML?=?'abc'; ????????console.log(div[0]);//<div>abc</div> 选择器 $()中接收css选择器。接收的是字符串建议写双引号。 Css的选择器怎么书写,参数 就怎么书写。 支持css2.1选择器: 支持css3选择器: eq()还可以提取出一种方法.eq() jQuery函数: jQuery文件全局其实是向外暴露的是jQuery函数,只是人们觉得书写jQuery () 函数比较复杂,后来改为$() 现在仍然保留着jQuery () ????????//jquery支持css2.1选择器,支持css3选择器 ????????console.log($('div'));//[div,?div#app,?div] ????????console.log($('#app'));//?[div#app] ????????console.log($('.demo'));//[p.demo,?h2.demo] ????????//组合形式 ????????console.log($('h2.demo'));//h2.demo ????????console.log($('[color=red]'));//div ????????console.log($('p:first'));//p ????????console.log($('p:last'));//?p.demo ????????//从?0?开始计数 ????????console.log($('p:even'));//[p,?p] ????????console.log($('p:nth-child(2)'));//[p] ????????//二次筛选eq();从0开始计数 ????????console.log(22,?$('div').eq(2));//[div#app] ????????console.log(22,?jQuery('div').eq(2));//[div#app] ????????//获取将window转成jquery ????????//转成jquery后,就可以使用jQuery方法了 ????????console.log($(window)); ????????console.log($(document)); ????????console.log($(function?()?{?})); ????????console.log($([])); ????????console.log($({})); 2.常用方法2.1size() :length属性。通过$()函数获取到的jquery对象也具有length。表示对象中具有元素的个数。 size()和length都表示表示元素的个数。 ????????div?{ ????????????height:?50px; ????????????border-right:?10px?solid?red; ????????} ????????div:nth-child(1)?{ ????????????border-right:?5px?solid?rgb(199,?175,?43); ????????}??? ?<div>1</div> ????<div>2</div> ????<div>3</div> <div>4</div> ?//获取元素 ????????//注意:工作中,我们常常将jQuery获取的元素,存储在一个变量中 ????????//让$方法执行一次就可以了,后面可以多次使用,提高效率 ????????var?div?=?$('div'); ????????console.log(div.length);//4//属性 ????????console.log(div.size());//4//方法 css():??? 得到的是元素对象计算后的样式。 读取:参数:css的属性名。(短横驼峰都可以)返回的是字符串类型的数据。如果想让得到后的值参与运算,需要转为number类型:parselnt(), parseFloat ()。 返回的是 第一个 元素的样式。 设置:可以只设置一个属性。还可以同时设置多个属性。建议驼峰式命名 ?//设置样式 ????????divs.css('font-size',?'39px') ????????divs.css('borderBottom',?'3px?green?solid') ????????//设置多个属性 ????????divs.css({ ????????????backgroundColor:?'pink', ????????????//注意,单位如果是像素可以省略 ????????????width:?300, ????????????//?height:?100, ????????}) ????????//获取样式 ????????//兼容ie678 ????????//注意:获取的是?第一个元素?的样式 ????????//10px?solid?rgb(255,?0,?0) ????????//5px?solid?rgb(199,?175,?43) ????????console.log(divs.css('border-right')); ????????console.log(divs.css('borderRight')); ????????//想运算,需要转成数字 ????????console.log(parseInt(divs.css('height'))?+?90); 小结: jQuery中的一些方法,可以获取数据,也可以设置数据(函数重载) jquery绑定事件 ?on方法或者直接事件名称定义回调函数。 ???????//绑定事件 ????????//?on(属性名,回调函数) ????????divs.on('click',?function?()?{ ????????????//this指向当前元素 ????????????console.log(this); ????????????//this是js的dom对象,因此要使用原生的方式操作 ????????????//?this.style.backgroundColor?=?'skyblue'; ????????????//如果想使用jQuery方法,需要转换成jQuery对象 ????????????//工作中,建议转成jQuery对象,兼任性极佳 ????????????$(this).css('background-color',?'yellowgreen') ????????}) ????????//事件的究极简写. ????????//给函数传递的方法叫回调 ????????divs.click(function?()?{ ????????????//与on方法一样,会对?所有获取的元素?绑定事件 ????????????console.log(this); ????????}) 2.2显隐方法: show()和hide(),show()出现:终点状态display:block hide()消失:终点状态display:none ????????//淡入,淡出,淡切换动画 ????????????box.fadeIn(); ????????????box.fadeOut(); ????????????box.fadeToggle(); 参数: 不书写参数,表示干嘣效果。还可以书写参数,表示动画完成的时间。单位ms省略不写单位。 toggle():切换显隐 ????<script?src="../jquery02.js"></script> ????<script> ????????//获取元素 ????????var?btns?=?$('button'); ????????var?box?=?$('.box');//此处根据类型来获取 ????????//获取特定元素: ????????//通过索引值获取?//获取的是原生的dom对象 ????????//?console.log(btns[0],?btns.eq(0)); ????????//通过eq方法获取?//获取的是仍然是jQuery对象 ????????//eq方法?返回jQuery对象,因此可以?连续打点调用?方法 ????????btns.eq(0).click(function?()?{ ????????????//show方法 ????????????box.show(1000);//参数,表示动画完成的时间。ms ????????}); ????????btns.eq(1).click(function?()?{ ????????????//hide方法 ????????????box.hide(0000); ????????}); ????????btns.eq(2).click(function?()?{ ????????????//toggle方法//切换显隐 ????????????box.toggle(1000); ????????}); //用原生js实现 ????????//获取元素 ????????var?box?=?document.getElementsByTagName('div')[0]; ????????var?btns?=?document.getElementsByTagName('button'); ????????//显示与隐藏 ????????//?绑定事件 ????????btns[0].onclick?=?function?()?{ ????????????//1秒钟显示, ????????????//最初的结果 ????????????var?width?=?0, ????????????????height?=?0, ????????????????opacity?=?0; ????????????//次数 ????????????num?=?parseInt(1000?/?33); ????????????//循环设置 ????????????var?timeber?=?setInterval(function?()?{ ????????????????//修改数值 ????????????????width?+=?400?/?num; ????????????????height?+=?300?/?num; ????????????????opacity?+=?1?/?num; ????????????????box.style.width?=?width?+?'px'; ????????????????box.style.height?=?height?+?'px'; ????????????????box.style.opacity?=?opacity; ????????????????//当宽度?<=?0?的时候,要停止 ????????????????if?(width?>=?400)?{ ????????????????????//停止循环 ????????????????????clearInterval(timeber)}},?33)} ????????btns[1].onclick?=?function?()?{ ????????????//1秒钟隐藏 ????????????//宽高从400,变成0,透明度?1到0? ????????????//记录当前?高度宽度?与?透明度 ????????????var?width?=?400, ????????????????height?=?300, ????????????????opacity?=?1; ????????????//用了多少次 ????????????num?=?parseInt(1000?/?33); ????????????var?timeber?=?setInterval(function?()?{ ????????????????//修改数值 ????????????????width?-=?400?/?num; ????????????????height?-=?300?/?num; ????????????????opacity?-=?1?/?num; ????????????????box.style.width?=?width?+?'px'; ????????????????box.style.height?=?height?+?'px'; ????????????????box.style.opacity?=?opacity; ????????????????//当宽度?<=?0?的时候,要停止 ????????????????if?(width?<=?0)?{ ????????????????????//停止循环 ????????????????????clearInterval(timeber) ????????????????}},?33)}</script></body> 2.3下拉与上滑: slideDown()和slideUp()slideDown():徐徐展开。 slideUp():慢慢合起。 参数:不写时间参数也表示动画,默认为400ms。还可以书写参数。 动画机理: slideDown()是开始时,元素瞬间height为0,然后慢慢高度增加到css设置的数值。最终display:block; slideUp(0)相反。 slideToggle()切换。 淡入淡出: fadeln()和fadeOut() fadeln():淡入 fadeOut():淡出 参数:可以书写时间参数也可以省略 2.4 html( ):与attr( ):html(): 可以读取元素的内部文本。 还可以设置内部文本。参数:要设置的文字。还可以添加DOM节点。 原理就是为元素设置innerHTML属性 操作元素类: addClass()和removeClass()和toggleClass()和hasClass(判断类是否存在) attr(): 该方法用于设置元素的原有属性 使用方式: $(dom).attr(key, value) key:原有的属性名 value:属性值 当传递一个参数的时候,可以读取元素的原有属性。 3.节点操作3.1选择对象$(this): ?在事件回调函数中,获取当前元素对应的jQ对象。 $(this)jquery对象 表示触发事件的对象。 parent(): 是一个方法,有小括号。父节点(只能选中元素的父亲节点,不能选中爷爷或者曾爷爷) children(): 子节点。小括号中可以书写参数,表示指定的某个儿子。 siblings() 亲兄弟。只能选中同一个父节点的亲兄弟。 其它节点方法: next:选中下一个兄弟节点 nextAll:会选中后面所有的兄弟节点 prev:选中上一个兄弟节点 prevAll:会选中前面所有的兄弟节点 parents:会选中祖先节点 find:会选中后代节点 ?????? 注意: .end方法可以中断查找,返回上一个对象 ???? ??? ??.end,放在哪后面,则从那往上返回一级 连续打点:节点操作可以连续打点。 3.2序号问题eq(): 表示选中元素大队列的排名,与亲兄弟没有直接的关系。 选中元素的不同,序号也是不相同的 index(): 表示选中元素亲兄弟的排名,只要是同一个父节点都是亲兄弟。 它的值非常的稳定,无视选择器的选择 返回值就是索引值 each():用于遍历、循环所匹配到的每一个元素, 接收一个参数是函数,函数中也有this, 表示遍历到的该对象 方法会遍历每一个所匹配到的元素。 以后只要看到每一个元素要做的事情,首先要想要each方法 方法中的函数里面有一个参数 ?i ,表示遍历到该对象的序号 3.3 animate动画animate函数接收两个参数 第一个参数: CSS样式对象 能够参与动画的属性:所有数值型的属性都可以参与动画 如: width, height, border .... 第二个参数: time (完成动画的时间) 单位ms animate函数基于终点的动画 执行顺序: [ ] 同一元素的不同animate,会按照顺序执行 不同元素的animate,会同时执行 css和animate: animate需要花费时间(动态),css会瞬间完成(静态) ????????$('.btn').click(function?()?{ ????????????//?//更改位置???//静态样式 ????????????//?$('.box1').css({ ????????????//?????left:?1000, ????????????//?????top:?400 ????????????//?}) ????????????//动态效果 ????????????//?$('.box1').animate({ ????????????//?????left:?1000, ????????????//?????top:?400 ????????????//?},?2000) ????????????//同一个元素添加?2?个动画 ????????????//是按顺序执行 ????????????//不同元素添加的动画是同时执行 ????????????$('.box1').animate({ ????????????????left:?1000 ????????????},?2000) ????????????$('.box2').animate({ ????????????????left:?1000 ????????????},?2000) ????????}) 3.4 回调函数异步语句: 类似于animate这种需要花费时间的语句,如果后面还有其它的js语句,这些语句不会等着animate执行完毕之后再去执行,而是会立即执行。 回调函数: 异步语句一般都有一个回调函数,当异步语句执行之后要做的事件就是写在回调函数中的 比如: animate()、 show(100)、 hide(1 00)、slideDown()、 slideUp()、 fadeln()、 fadeOut() 例如:我们要做一次肉菜,第一步是先将肉从冰箱中取出,将肉放入微波炉中解冻,解冻需要花费5min,在这期间我们还能烧水、洗菜、摘菜,等到微波炉叮一声之后(叮一声之后要做的事情就是写在回调函数中) ,将肉取出,开始做肉菜,做肉菜的行为就是写在回调函数中。 实际上animate函数可以接收三个参数: animate(json, time, callBack) json:样式对象 time:完成动画的时间 callBack:回调函数 3.5延迟与终止3.5.1delay:表示延迟,只能够书写在动画之前,参数就是要延迟的时间 动画方法 如: animate()、 show(100)、 hide(100)、 slideDown()、 slideUp()、 fadeln()、 fadeOut() 可以利用delay控制元素的入场顺序 ????????$('.btn').click(function?()?{ ????????????//直接书写动画?会立即执行 ????????????//?$('.box1').animate({?left:?1000?},?2000); ??????//1秒后再?执行,delay?,?直接写在后面,没有效果//写在最前面 ????????????$('.box1').delay(1000).animate({?left:?1000?},?2000); ????????}) ????????$('.btn').click(function?()?{ ????????????//按照顺序,每隔?1s?执行一个 ????????????$('.box1').each(function?(index,?item)?{ ????????????????//获取元素$(this),$(item) ????????????????$(item).delay(index?*?1000).animate({ ????????????????????left:?450 ????????????????},?1000) ????????????}) ?}) 3.6.2stop:该方法用于让运动的元素立即停止动画,接收两个参数,都是布尔值,默认是false 第一个参数表示是否清空当前动画队列 第二个参数表示是否立即完成当前动画 stop(false, false):等价于stop() 立即进入下一个动画,立即停止动画 ?????$('.btn').click(function?()?{ ????????????//以下就构成?动画队列 ????????????//动画1,向右移动1000 ????????????$('.box2').animate({?left:?300?},?2000); ????????????//动画2,向下移动500 ????????????$('.box2').animate({?top:?500?},?2000); ????????????//动画3,向左移动500 ????????????$('.box2') ????????????????.stop() ????????????????//立即停止当前执行的动画(停止动画1), ????????????????//立即执行下一个动画(执行动画2) ????????????????.animate({?left:?100?},?2000)?}) stop(false,true):立即进入下一个动画,立即停止并完成当前动画 ?$('.box2') ????????????????.stop(false,?true) ????????????????//立即停止当前执行的动画(停止动画1), ????????????????//第一次执行时,直接显示?动画1?的结果,并? ????????????????//立即执行动画直到完毕 ????????????????.animate({?left:?100?},?2000) stop(true, true):清空当前动画队列,立即停止并完成当前动画 $('.box2') ????????????????.stop(true,?true)//删除动画12,执行动画3, ????????????????//动画1?被立即执行完毕(直接显示结果画面),再执行?当前动画 ????????????????.animate({?left:?100?},?2000) stop(true, false):等价于stop(true) 清空当前动画队列,立即停止动画 ??????$('.box2') ????????????????.stop(true)//删除动画12,直接从0执行到动画3, ????????????????.animate({?left:?100?},?2000) 3.6动画累积一个元素身上可能存在多个动画,尤其在不经意间造成的动画积累,此时,就要进行防止(防流氓) 比如: 现在有一支队伍,接到命令去往广州,在中途又接到命了回北京 此时,该队伍有两个策略: 第一个策略:放弃原有任务,立即执行新的任务 直接利用stop(true)来实现 第二个策略:只有当元素不运动的时候,才接受新的任务 利用is():表示元素是否具备某种状态 ?????????? console.log($('.box1').is(':animated'));//true 4.大数据可视化-highchar4.1Highcharts????????????? Highcharts是一款纯javascript编写的图表库 ,能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图、曲线图、面积图、柱状图、饼图、散点图等多达1 8种不同类型的图表,可以满足你对Web图表的任何需求! ??? ?? Highcharts 的运行需要两个JS文件,highchartsjs 及jQuery、MooTools、Prototype 、Highcharts Standalone Framework常用JS框架中的一个。 4.2大数据可视化-highchar●Title: 图表标题,包含标题和副标题(subTitle) ,其中副标题是非必须的。 ●Axis: 坐标轴,包含x轴(xAxis) 和y轴(yAxis) ●Series: 数据列。图表上一个或多个数据系列,比如曲线图中的一条曲线 ●Tooltip: 数据提示框。当鼠标悬停在某点上时,以框的形式提示该点的数据 ●Legend: 图例。用不同形状、颜色、文字等标示不同数据列,点击标示可以显隐该数据列。 ●Credits:图表版权信息。 ●Exporting: 导出功能按钮。须引入exporting.js. ●PlotLines: 标示线(或辅助线)。 ●PlotBands: 标示区域(分辨带)。 5. 代码规范1使用4个空格做为一-个缩进层级 2 switch下的case和default必须增加一个缩进层级。 3二元运算符两侧必须有一个空格, 一元运算符与操作对象之间不允许有空格。 4用作代码块起始的左花括号{前必须有一个空格。 5 if/ else / for / while / function / switch / do / try / catch / finally关键字后,必须有 一个空格。 6在对象创建时,属性中的:之后必须有空格,:之前不允许有空格。 7函数声明、匿名函数表达式、函数调用中,函数名和(之间不允许有空格。 8,和;前不允许有空格。不得省略语句结束的分号。 9在函数调用、函数声明、括号表达式、属性访问、if / for / while / switch / catch等语句中,单行声明的数组 与对象,如果包含元素,() 和[]内紧贴括号部分不允许有空格。 10每个独立语句结束后必须换行。 11在函数声明、函数表达式、函数调用、对象创建、数组创建、for语句等场景中,不允许在,或;前换行。 12不同行为或逻辑的语句集,使用空行隔开,更易阅读。 13在if/ else / for / do / while语句中,即使只有一-行, 也不得省略块{..}. 14函数定义结束不允许添加分号。IIFEI 必须在函数表达式外添加(,非IIFEI不得在函数表达式外添加(。 15页面中script标签与左侧缩进4个空格,script标签内部的代码不缩进,与script在同一列 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:06:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |