1.什么是JQuery?
Jquery是一个轻量级的Javascript类库,重量级:ext
2.jQuery的优点
2.1 兼容性 2.2 选择器(与CSS选择器语法相似)
2.3 面向集合(面向集合方式操作DOM元素)
2.4 链式语法
3.jQuery三种工厂方法
3.1 jQuery(exp[,context])
exp:选择器
context:上下文 容器/环境 默认:document
1)元素选择器
2)类选择器
3)ID选择器
4)组合选择器(E1,E2)
5)包含选择器(E1 E2)
6)属性选择器
3.2 jQuery(html)
html:基于html的一个字符串
3.3 jQuery(element)
element:js对象,表示一个html元素
4.this指针
4.1 this的用法
this:当前上下文DOM对象
$(this):当前上下文jQuery对象,可以调用jQuery的方法和属性
4.2 作用域:each
首先导入js文件
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
$(fn)、$(document).ready(fn)是等价的。那个代码在前面哪个先执行。
jsp的dom树结构加载完毕即刻调用方法,window.onload最后执行,jsp的dom树加载完,css,js等静态资源加载完毕执行
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.min.js"></script> <title>Insert title here</title> <script type="text/javascript"> /* * $(fn)、$(document).ready(fn)与window.onload的区别?项目维护时用到 */ window.onload=function(){ alert("3") } $(document).ready(function(){ alert("2") }) $(function(){ alert("1"); }) </script> </head> <body> </body> </html>
jquery六大选择器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.min.js"></script> <script type="text/javascript"> $(function(){ //利用a标签获取jquery实例 /* $("a").click(function(){ alert("被翻牌子了"); }); */ //利用ID=a3标签获取jquery实例 /* $("#a3").click(function(){ alert("被翻牌子了"); }); */ /* $(".c1").click(function(){ alert("被翻牌子了"); }); */ /* $("p a").click(function(){ alert("被翻牌子了"); }); */ /* $("a,span").click(function(){ alert("被翻牌子了"); }); */ //讲解第二个参数的作用(在DIV标签内部寻找到a标签,然后给找到的标签添加事件) //如果第二个参数没有填写,那么默认是document $("a","div").click(function(){ alert("被翻牌子了"); }); }) </script> </head> <body> </body> </html>
jquery对象转js对象,js对象转jquery对象
//jquery对象转js对象 var h1Node=$h1.get(0); alert(h1Node.value); */ var h2Node=document.getElementById("h2"); alert(h2Node.value); //js对象转jquery对象 $h2Node=$(h2Node); alert(h2Node.val()); }); })
this指针
<script type="text/javascript"> $(function(){ $(":input").click(function(){ //指得是事件源 alert(this.value); $("a").each(function(index,item){ //指得是当前元素 alert(index+","+$(this).html()+","+$(this).html()); }); }); }) </script>
使用jquery动态给table添加样式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.min.js"></script> <style type="text/css"> .fen { background: #ff66ff; } .yello { background: #ffff66; } .red { background: #ff3333; } .blue { background: #9999ff; } .green { background: #bbff99; } .hui { background: #d6d6c2; } </style> <title>Insert title here</title> <script type="text/javascript"> $(function(){ $("table tr:eq(0)").addClass("yello"); $("table tr:gt(0)").addClass("red"); $("table tr:gt(0)").hover(function(){ $(this).removeClass().addClass("fen"); },function(){ $(this.removeClass().addClass("red")); }) }) </script> </head> <body> <table border="1" width="100%"> <tr> <td>书名</td> <td>作者</td> <td>点击量</td> </tr> <tr> <td>圣墟</td> <td>辰东</td> <td>10万</td> </tr> <tr> <td>飞剑问道</td> <td>我吃西红柿</td> <td>11万</td> </tr> <tr> <td>杀神</td> <td>逆苍天</td> <td>22万</td> </tr> <tr> <td>龙王传说</td> <td>唐家三少</td> <td>18万</td> </tr> <tr> <td>斗破苍穹</td> <td>天蚕拖豆</td> <td>1万</td> </tr> </table> </body> </html>
1. 插件机制简介
往jquery类库里面去扩展方法,这类方法就是jquery插件
jquery的类方法跟类属性,跟类实例化
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.min.js"></script> <title>Insert title here</title> <script type="text/javascript"> $(function() { //json对象的字符串体现形式 var jsonObj1 = { sid:'s001', sname:'zhangsan' }; console.log(jsonObj1); //json数组的字符串体现形式 var jsonArray1 = [1,3,4,5]; console.log(jsonArray1); //json混合模式的字符串体现形式 var jsons = {id:3,hobby:['a','b','c']}; console.log(jsons); var jsonObj3 = { sid:'s001', sname:'lisi', hobby:['a','b','c'] }; //$extend是用来扩展jQuery类属性或者方法所用 var jsonObj2 = {}; //用后面的对象扩充定一个对象 //$.extend(jsonObj2,jsonObj1); //讲解扩充值覆盖的问题,之前已经扩充的属性值会被后面的对象覆盖,如果后面对象有新的属性,会继续扩充。 $.extend(jsonObj2,jsonObj1,jsonObj3); console.log(jsonObj2); // $.extend({ hello:function(){ alert('我来了'); } }); $.hello(); //$.fn.extend是用来扩展jQuery类属性或者方法所用 $.fn.extend({ sayHello:function(){ alert('哈哈哈'); } }); $("#yellow").sayHello(); alert("yellow"); }) </script> </head> <body> <span id="yellow">yellow</span> </body> </html>
插件开发实例js文件
$(function(){ //设置默认颜色 var defaults = { head : 'fen', out : 'yellow', over : 'red' } $.fn.extend({ //使用return的原因是让该实例方法支持链编程,好比StringBuffer bgColor:function(option){ $.extend(defaults,option); //这里的this指的是插件本身,可以看成一个jQuery实例 return this.each(function() { //给默认值(this指当前元素) $("tr:eq(0)",this).addClass(defaults.head); $("tr:gt(0)",this).addClass(defaults.out); //添加动态效果 $("tr:gt(0)",this).hover(function(){ $(this).removeClass().addClass(defaults.over); },function(){ $(this).removeClass().addClass(defaults.out); }); }); } }); })
css样式
.fen { background: #ff66ff; } .yellow { background: #ffff66; } .red { background: #ff3333; } .blue { background: #9999ff; } .green { background: #bbff99; } .hui { background: #d6d6c2; }
使用jquery+ajas实现三级联动
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="${pageContext.request.contextPath }/"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ query($("#prov"),7459) $("#prov").change(function(){ query($("#city"),$(this).val()) }); $("#city").change(function(){ query($("#town"),$(this).val()) }) $("#prov").change(function(){ query($("#town"),$(this).val()) }) }); function query(obj,pid){ $.ajax({ url:'RegionAction', data:{"parent_id":pid}, dataType:'json', type:'post', success:function(data){ obj.find("option:not(:first)").remove(); $.each(data,function(idx,elem){ obj.append("<option value='"+elem.id+"'>"+elem.region_name+"</option>") }); } }); } </script> </head> <body> <select id="prov"> <option value="">请选择</option> </select> <select id="city"> <option value="">请选择</option> </select> <select id="town"> <option value="">请选择</option> </select> </body> </html>
运行结果