jQuery是一个兼容多浏览器的javascript库(函数库),核心理念是write less, do more(写得更少,作的更多)。javascript
JQuery,顾名思义,就是JavaScript和查询 (Query),便是辅助JavaScript开发的库。css
Query 是一个快速的简洁的javascript框架,能够简化查询DOM对象、处理事件、制做动画、处理Ajax交互过程。html
程序员的角度:简化JavaScript和Ajax编程,可以使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提升项目的开发速度。java
用户体验的角度:改善了页面视觉效果,加强了与页面的交互性,体验更绚丽的网页物资。程序员
快速实现通讯(ajax)ajax
jQuery库文件不须要安装,只需使用 < script >标签引入到HTML文件中,拿到jQuery的库文件后,就跟本身写的JS文件一样的引入方式,便可,如下是几种引入方式:编程
1) 引入本地的Jquery浏览器
2) 引入cdn在线提供的库文件(稳定可靠高速)框架
$(document).ready(function(){})和window.onload 的区别:less
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="box">123123</div> </body> </html> <script src="js/jQuery.js"></script> <script type="text/javascript"> // 相似于延迟加载 $(function() { console.log("xixi"); }); //彻底体 $(document).ready(function() { // 原生dom let oBox = document.getElementById("box"); console.log(oBox.innerHTML); //jQueryDom console.log($("#box").html()); }); </script>
jQuery所获取的全部dom元素不管是一个仍是一组,都封装成一个jQuery包装集,即集合。
jQuery包装集与DOM 对象的互转:
原生Dom -> jQueryDom
let oBox = document.getElementById("box"); console.log($(oBox).html());
jQueryDom -> 原生Dom
// 方法1: let oBox = $("div").get(0); // 方法2: let oBox = $("div")[0]; console.log(oBox.innerHTML);
// 方法1: // $("#box1").css("backgroundColor", "red"); // 方法2: 相似css代码 $("#box1").css({ backgroundColor: "red" });
$(".box").css({backgroundColor: "red"});
$("p").css({color: "red"});
$("p,span,strong").css({color: "red"});
(这是选择所有元素)
$("*").css({backgroundColor: "green"});
空格
后代:不仅是子代
$("body div").css({backgroundColor: "red"});
大于号
$("body>div").css({backgroundColor: "red"});
加号
$("#box1+div").css({backgroundColor: "red"});
波浪号~
$("#box2~div").css({backgroundColor: "red"});
[属性名/属性名=属性值...]
<script type="text/javascript"> // div带有class属性的选择器 $("div[class]").css({backgroundColor:"red"}); // div同时带有多个属性的选择器 $("div[class][id]").css({backgroundColor:"red"}); // 经过指定的属性值来获取元素 $("div[id='box1']").css({backgroundColor:"red"}); </script>
:even 获取全部偶数行的元素
// 注意:从第0行开始 $("div:even").css({backgroundColor:"red"});
:odd 获取全部奇数行的元素
$("div:odd").css({backgroundColor:"red"});
:first 获取第0个元素
$("div:first").css({backgroundColor: "red"});
:last 获取最后一个元素
$("div:last").css({backgroundColor:"red"});
:eq(下标) 根据下标获取某个特定的元素
//写法1: $("div:eq(2)").css({backgroundColor: "red"}); //写法2: let n = 3; $("div").eq(n).css({backgroundColor: "red"});
:not(目标元素) 除了某个元素
//写法1: $("div:not('#box3')").css({backgroundColor: "red"}); //写法2: $("div").not("#box3").css({backgroundColor: "red"});
:gt(n) 获取大于n的元素
$("div:gt(2)").css({backgroundColor:"skyblue"});
:lt(n) 获取小于n的元素
$("div:lt(2)").css({backgroundColor:"red"});
:contains(内容) 根据元素的内容,获取元素
$("div:contains('hello world')").css({backgroundColor: "red"});
:empty 选中内容为空的元素,空格换行都不能有
$("div:empty").css({backgroundColor:"red"});
:has(选择器) 根据包含的元素来进行选择
$("div:has('span')").css({backgroundColor:"red"});
:visible 改变可见元素的样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <table> <tr style="display:none"> <td>Value 1</td> </tr> <tr> <td>Value 2</td> </tr> </table> </body> </html> <script class="lazy" data-src="js/jQuery.js"></script> <script type="text/javascript"> // :hidden 选中隐藏的元素 $("tr:hidden").css({backgroundColor:"red"}); // :visible 改变可见元素的样式 $("tr:visible").css({backgroundColor:"green"}); </script>
jQuery 遍历,意为“移动”,用于根据其相对于其余元素的关系来“查找”(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您指望的元素为止。
下图展现了一个家族树。经过 jQuery 遍历,您可以从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。
图示解释:
$("#box1").next().css({backgroundColor: "red"});//连缀模式 $("#box1").nextAll().css({backgroundColor: "red"});
parent() 找父节点
$("p").eq(1).parent().css({backgroundColor:"red"});
找子节点
children (能够不写参数)
$("body").find("span").css({backgroundColor: "red"}); $("body").children().css({backgroundColor: "red"});//body的孩子(父子关系)
jQuery特色:关于读写的函数,一般都是一个,无参为读,有参为写。
<script type="text/javascript"> // 读 console.log($("div").html()); // 写 $("div").html(567); // 读 console.log($("input").val()); // 写 $("input").val(888); </script>
Query的事件:
$("#box").click(function(){ //this要转成jQueryDom的this $(this).css({backgroundColor: "red"}); })
传参:
$("#box").click({name:"小明",age:18},function(evt){ console.log(evt.data);//{name:"小明",age:18} })
jQueryDom对象.show([speed,[easing],[fn]);
等价于:jQueryDom对象.hide([时间],[切换效果],[回调函数]);
参数speed
参数easing
参数fn回调函数
举例:
$('button').eq(0).click(function() { // 用1000毫秒将box元素隐藏,动画完成后执行回调,打印heihei //注意:动画须要时间,是异步,异步完成后再执行回调函数 $("#box").hide(1000, function() { console.log('heihei'); }) }); //作一些奇奇怪怪的事情 $("button").eq(2).click(function() { // 回调 $("#box").fadeToggle(1000, arguments.callee); });
stop([clearQueue],[jumpToEnd])
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #box { width: 200px; height: 200px; background-color: pink; position: absolute; } </style> </head> <body> <button type="button">变形</button> <button type="button">中止</button> <div id="box"> </div> </body> </html> <script class="lazy" data-src='jQuery.js'></script> <script type="text/javascript"> $("button").eq(0).click(function() { //连缀模式 $("#box").animate({ height: 100, width: "300px", left: 1000 }, 1000, function() { console.log(1); }).animate({ top: 600 }, 2000, function() { console.log(2); }).animate({ left: 0 }, 2000, function() { console.log(3); }).animate({ top: 50 }, 2000, function() { console.log(4); }); }); $("button").eq(1).click(function() { // 结束当前动画,其余动画正常执行 // $("#box").stop();//无参默认为两个false // 中止全部动画队列 // $("#box").stop(true,false); //当即执行完当前动画,其余动画正常执行 // $("#box").stop(false,true); //当即执行完当前动画,并清空动画队列 $("#box").stop(true, true); }); </script>
案例:手风琴
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } ul { width: 500px; height: 150px; background-color: #FFC0CB; margin: auto; /* position: relative; */ } li { list-style: none; float: left; width: 40px; height: 150px; overflow: hidden; border: 1px solid black; } img { height: 150px; width: 240px; background-size: 240px; } </style> </head> <body> <ul> <li>  </li> <li>  </li> <li>  </li> <li>  </li> <li>  </li> </ul> </body> </html> <script src="jQuery.js"></script> <script type="text/javascript"> $('li').mouseover(function() { $(this).stop().animate({ width: 240 }).siblings('li').stop().animate({ width: 40 }); }); </script>