JavaScript库:即 library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了不少预先定义好的函数在里面,好比动画animate、hide、show,好比获取元素等。css
简单理解: 就是一个JS 文件,里面对咱们原生js代码进行了封装,存放到里面。这样咱们能够快速高效的使用这些封装好的功能了。前端
好比 jQuery,就是为了快速方便的操做DOM,里面基本都是函数(方法)。jquery
常见的JavaScript 库:jQuery、Prototype、YUI、Dojo、Ext JS、移动端的zepto等,这些库都是对原生 JavaScript 的封装,内部都是用 JavaScript 实现的,咱们主要学习的是 jQuery。编程
jQuery整体概况以下 :数组
jQuery 是一个快速、简洁的 JavaScript 库,其设计的宗旨是“write Less,Do More”,即倡导写更少的代码,作更多的事情。浏览器
j 就是 JavaScript; Query 查询; 意思就是查询js,把js中的DOM操做作了封装,咱们能够快速的查询使用里面的功能。dom
jQuery 封装了 JavaScript 经常使用的功能代码,优化了 DOM 操做、事件处理、动画设计和 Ajax 交互。ide
学习jQuery本质: 就是学习调用这些函数(方法)。函数
jQuery 出现的目的是加快前端人员的开发速度,咱们能够很是方便的调用和使用它,从而提升开发效率。学习
jQuery的官网地址: https://jquery.com/,官网便可下载最新版本。
各个版本的下载:https://code.jquery.com/
版本介绍:
1x :兼容 IE 678 等低版本浏览器, 官网再也不更新
2x :不兼容 IE 678 等低版本浏览器, 官网再也不更新
3x :不兼容 IE 678 等低版本浏览器, 是官方主要更新维护的版本
jQuery中常见的两种入口函数:
// 第一种: 简单易用。 $(function () { ... // 此处是页面 DOM 加载完成的入口 }) ; // 第二种: 繁琐,可是也能够实现 $(document).ready(function(){ ... // 此处是页面DOM加载完成的入口 });
总结:
使用 jQuery 方法和原生JS获取的元素是不同的,总结以下 :
注意:
只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。
DOM 对象与 jQuery 对象之间是能够相互转换的。由于原生js 比 jQuery 更大,原生的一些属性和方法 jQuery没有给咱们封装. 要想使用这些属性和方法须要把jQuery对象转换为DOM对象才能使用。
// 1.DOM对象转换成jQuery对象,方法只有一种 var box = document.getElementById('box'); // 获取DOM对象 var jQueryObject = $(box); // 把DOM对象转换为 jQuery 对象 // 2.jQuery 对象转换为 DOM 对象有两种方法: // 2.1 jQuery对象[索引值] var domObject1 = $('div')[0] // 2.2 jQuery对象.get(索引值) var domObject2 = $('div').get(0)
总结: 实际开发比较经常使用的是把DOM对象转换为jQuery对象,这样可以调用功能更增强大的jQuery中的方法。
原生 JS 获取元素方式不少,很杂,并且兼容性状况不一致,所以 jQuery 给咱们作了封装,使获取元素统一标准。
$("选择器") // 里面选择器直接写 CSS 选择器便可,可是要加引号
级选择器 层最经常使用的两个分别为:后代选择器和子代选择器。
基础选择器和层级选择器案例代码
<body> <div>我是div</div> <div class="nav">我是nav div</div> <p>我是p</p> <ul> <li>我是ul 的</li> <li>我是ul 的</li> <li>我是ul 的</li> </ul> <script> $(function() { console.log($(".nav")); console.log($("ul li")); }) </script> </body>
筛选选择器,顾名思义就是在全部的选项中选择知足条件的进行筛选选择。常见以下 :
案例代码
<body> <ul> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> </ul> <ol> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> <li>多个里面筛选几个</li> </ol> <script> $(function() { $("ul li:first").css("color", "red"); $("ul li:eq(2)").css("color", "blue"); $("ol li:odd").css("color", "skyblue"); $("ol li:even").css("color", "pink"); }) </script> </body>
另: jQuery中还有一些筛选方法,相似DOM中的经过一个节点找另一个节点,父、子、兄之外有所增强。
$('div').css('属性', '值')
// 想要多选一的效果,排他思想:当前元素设置样式,其他的兄弟元素清除样式。 $(this).css(“color”,”red”); $(this).siblings(). css(“color”,””);
// 遍历内部 DOM 元素(伪数组形式存储)的过程就叫作隐式迭代。 // 简单理解:给匹配到的全部元素进行循环遍历,执行相应的方法,而不用咱们再进行循环,简化咱们的操做,方便咱们调用。 $('div').hide(); // 页面中全部的div所有隐藏,不用循环操做
// 链式编程是为了节省代码量,看起来更优雅。 $(this).css('color', 'red').sibling().css('color', '');
思路分析:
jQuery中经常使用的样式操做有两种:css() 和 设置类样式方法
jQuery 可使用 css 方法来修改简单元素样式; 也能够操做类,修改多个样式。
经常使用如下三种形式 :
// 1.参数只写属性名,则是返回属性值 var strColor = $(this).css('color'); // 2. 参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值若是是数字能够不用跟单位和引号 $(this).css(''color'', ''red''); // 3. 参数能够是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性能够不用加引号 $(this).css({ "color":"white","font-size":"20px"});
注意:css() 多用于样式少时操做,多了则不太方便。
做用等同于之前的 classList,能够操做类样式, 注意操做类里面的参数不要加点。
经常使用的三种设置类样式方法:
// 1.添加类 $("div").addClass("current"); // 2.删除类 $("div").removeClass("current"); // 3.切换类 $("div").toggleClass("current");
注意:
思路分析:
jQuery 给咱们封装了不少动画效果,最为常见的以下:
注意:
动画或者效果一旦触发就会执行,若是屡次触发,就形成多个动画或者效果排队执行。
jQuery为咱们提供另外一个方法,能够中止动画排队:stop() ;
显示隐藏动画,常见有三个方法:show() / hide() / toggle() ;
语法规范以下:
代码演示
<body> <button>显示</button> <button>隐藏</button> <button>切换</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { $("div").show(1000, function() { alert(1); }); }) $("button").eq(1).click(function() { $("div").hide(1000, function() { alert(1); }); }) $("button").eq(2).click(function() { $("div").toggle(1000); }) // 通常状况下,咱们都不加参数直接显示隐藏就能够了 }); </script> </body>
滑入滑出动画,常见有三个方法:slideDown() / slideUp() / slideToggle() ;
语法规范以下:
代码演示
<body> <button>下拉滑动</button> <button>上拉滑动</button> <button>切换滑动</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { // 下滑动 slideDown() $("div").slideDown(); }) $("button").eq(1).click(function() { // 上滑动 slideUp() $("div").slideUp(500); }) $("button").eq(2).click(function() { // 滑动切换 slideToggle() $("div").slideToggle(500); }); }); </script> </body>
淡入淡出动画,常见有四个方法:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ;
语法规范以下:
代码演示
<body> <button>淡入效果</button> <button>淡出效果</button> <button>淡入淡出切换</button> <button>修改透明度</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { // 淡入 fadeIn() $("div").fadeIn(1000); }) $("button").eq(1).click(function() { // 淡出 fadeOut() $("div").fadeOut(1000); }) $("button").eq(2).click(function() { // 淡入淡出切换 fadeToggle() $("div").fadeToggle(1000); }); $("button").eq(3).click(function() { // 修改透明度 fadeTo() 这个速度和透明度要必须写 $("div").fadeTo(1000, 0.5); }); }); </script> </body>
自定义动画很是强大,经过参数的传递能够模拟以上全部动画,方法为:animate() ;
语法规范以下:
代码演示
<body> <button>动起来</button> <div></div> <script> $(function() { $("button").click(function() { $("div").animate({ left: 500, top: 300, opacity: .4, width: 500 }, 500); }) }) </script> </body>
动画或者效果一旦触发就会执行,若是屡次触发,就形成多个动画或者效果排队执行。
中止动画排队的方法为:stop() ;
总结:每次使用动画以前,先调用 stop() ,在调用动画。
jQuery中为咱们添加了一个新事件hover(); 功能相似 css 中的伪类:hover 。介绍以下
语法
hover([over,]out) // 其中over和out为两个函数
hover事件和中止动画排列案例
<body> <ul class="nav"> <li> <a href="#">微博</a> <ul><li><a href="">私信</a></li><li><a href="">评论</a></li><li><a href="">@我</a></li></ul> </li> <li> <a href="#">微博</a> <ul><li><a href="">私信</a></li><li><a href="">评论</a></li><li><a href="">@我</a></li></ul> </li> </ul> <script> $(function() { // 鼠标通过 // $(".nav>li").mouseover(function() { // // $(this) jQuery 当前元素 this不要加引号 // // show() 显示元素 hide() 隐藏元素 // $(this).children("ul").slideDown(200); // }); // // 鼠标离开 // $(".nav>li").mouseout(function() { // $(this).children("ul").slideUp(200); // }); // 1. 事件切换 hover 就是鼠标通过和离开的复合写法 // $(".nav>li").hover(function() { // $(this).children("ul").slideDown(200); // }, function() { // $(this).children("ul").slideUp(200); // }); // 2. 事件切换 hover 若是只写一个函数,那么鼠标通过和鼠标离开都会触发这个函数 $(".nav>li").hover(function() { // stop 方法必须写到动画的前面 $(this).children("ul").stop().slideToggle(); }); }) </script> </body>
思路分析: