1. 什么是jQuery
它是一个轻量级的javascript类库
注1:就一个类“jQuery”,简写“$”
2. jQuery优点
2.1 总是面向集合
2.2 多行操作集于一行
3.如何使用jQuery(hello jQuery)
3.1 导入js库
<script type="text/javascript" src="js库路径"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-3.3.1.js"></script>
$(fn)、$(document).ready(fn)与window.onload的区别
window.οnlοad=function(){
alert("3")
}
$(document).ready(function(){
alert("2")
})
$(function(){
alert("1");
})
/*
*结论:$(fn)、$(document).ready(fn)是等价的。那个代码在前面哪个先执行。
*jsp的dom树结构加载完毕即刻调用方法
*window.onload最后执行
*jsp的dom树加载完,css,js等静态资源加载完毕执行
*/
4.jQuery三种工厂方法
4.1 jQuery(exp[,context])
exp:选择器
context:上下文 容器/环境 默认:document
/* 4.jQuery三种工厂方法
4.1 jQuery(exp[,context])
exp:选择器
c */ontext:上下文 容器/环境 默认:document
//利用a标签获取jquery实例
//元素选择器
/* $("a").click(function(){
alert("被翻牌子了");
}); */
//利用ID=a3标签获取jquery实例
//ID选择器
/* $("#a3").click(function(){
alert("被翻牌子了");
}); */
//类选择器
/* $(".c1").click(function(){
alert("被翻牌子了");
}); */
//包含选择器(E1 E2)
/* $("p a").click(function(){
alert("被翻牌子了");
}); */
//组合选择器(E1,E2)
/* $("a,span").click(function(){
alert("被翻牌子了");
}); */
//讲解第二个参数的作用(在DIV标签内部寻找到a标签,然后给找到的标签添加事件)
//如果第二个参数没有填写,那么默认是document
//属性选择器
$("a","div").click(function(){
alert("被翻牌子了");
});
})
</script>
</head>
<body>
<p>
<a id="a1" class="c1" href="#">点我1</a>
</p>
<p>
<a id="a2" class="c2" href="#">点我2</a>
</p>
<p>
<a id="a3" class="c3" href="#">点我3</a>
</p>
<div>
<a id="a4" class="c1" href="#">点我4</a>
</div>
<div>
<p>
<a id="a5" class="c1" href="#">点我5</a>
</p>
</div>
<span>点我</span>
</body>
jQuery.fn.extend()就是扩展jQuery本身的实例方法 “对象名.方法名”
jQuery.extend()就是扩展jQuery本身的类方法。静态方法 “类名.静态方法名”
2.JSON的三种方式
2.1 对象
{sid:'p001',sname:'zhangsan'}
2.2 列表/数组
[1,3,4,5]
[{},{},{}]
$.each(数组,function(idx,elem){
});
2.3 混合模式
{id:3,num:[1,3,4,5]}
{total:81,page:1,list:[{对象},{对象},{对象}]}
2.4 JSON转换
将字符串转成json对象: JSON.parse()
将对象、数组转换成字符串:JSON.stringify()
var obj={id:’001’:name:’zhangsan’
$(function() {
var obj={sid:'001',snaem:'zs'};
console.log(obj);
//1.将对象.数组转化成字符串JSON.stringify();
var tostr=JSON.stringify(obj);
console.log(tostr);
//2将字符串转化成JSON对象
var toobj=JSON.parse(tostr);
console.log(toobj);
//.$.extend和$.fn.extend
//1.1$.extend(obj1,obj2,obj3[,...])
//将所有参数合并到obj1,并返回obj1;
var obj1={'pid':'001','pname':'李四'};
var obj2={'pid':'007'};
var obj3={'card':'43101010001'};
console.log(obj1.pid+','+obj1.pname+','+obj1.card);
$.extend(obj1,obj2);
console.log(obj1.pid+','+obj1.pname+','+obj1.card);
$.extend(obj1,obj2,obj3);
console.log(obj1.pid+','+obj1.pname+','+obj1.card);
console.log("obj2:"+JSON.stringify(obj2));
//以obj参数扩展Jquery类方法和类属性(静态方法和静态属性)
//$.extend(obj):一次能扩展多个类方法
//$.method=function(option){};一次只能扩展一个类方法
var obj = {
add : function(a, b) {
return a + b;
},
minus : function(a, b) {
return a - b;
}
}
$.extend(obj);
var res=$.add(4,6);
console.log(res);
var ues=$.minus(8,4);
console.log(ues);
//$.method=function(option){};一次只能扩展一个类方法
$.div=function(a,b){
return a*b;
};
var res=$.div(2,2);
console.log(res);
//$.fn.extend:扩展jquery对象的实例方法
//实例化对象名.方法名
$.fn.extend({
color:function(){
return $(this).css({'background':'red'});
}
});
$('div').color();
$('table').bgcolor();
});
1.1 什么是Jackson
Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
1.2 核心代码
//JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现
对象User
package com.demo;
public class User {
private int age;
private String name;
private int id;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public User(int age, String name, int id) {
super();
this.age = age;
this.name = name;
this.id = id;
}
}
//JSON操作的核心,Jackson的所有JSON操作都是在
ObjectMapper mapper=new ObjectMapper();
// 1.3.1 JavaBean、Map集合与JSON互转
// 1)JavaBean/Map转JSONs
// 2)JavaBean转json对象
User user=new User(1, "lisji", 4);
String objtojson=mapper.writeValueAsString(user);
System.out.println(objtojson);
//1.2map集合转化成json对象
Map<String, Object> map=new HashMap<String, Object>();
map.put("pid", "p001");
map.put("pname", "zhangs");
map.put("page", "18");
String maptojson=mapper.writeValueAsString(map);
System.out.println(maptojson);
//1.3json对象转化成javabean对象
String jsonStr="{\"pname\":\"zhangs\",\"pid\":\"p001\",\"page\":\"18\"}";
User us=mapper.readValue(jsonStr, User.class);
// System.out.println(us);
//1.4JSON对象转化成map集合
//TypeReference(json对象序列化与反序列化)
Map<String, Object> jsonTMap= mapper.readValue(jsonStr, new TypeReference<Map<String, Object>>() {
});
//System.out.println(jsonTMap);
4.插件:表格行颜色切换效果
新建bgcolor.css文件
.head{
background: #ccc;
}
.over{
background: red;
}
.out{
background: #fff;
}
创建js文件jquery.bgcolor.js
$.fn.extend({
bgcolor:function(options){
//判空处理
options=options||{};
var defaults={
headClass:'head',
overClass:'over',
outClass:'out'
};
//扩展jquery本身的类方法,命名参数写发
$.extend(defaults,options);
return $(this).each(function(){
//修改表头的颜色
$("tr:eq(0)",this).addClass(defaults.headClass);
//添加行的悬停效果
$("tr:gt(0)",this).addClass(defaults.outClass).hover(function(){
$(this).removeClass(defaults.outClass).addClass(defaults.overClass);
},function(){
$(this).removeClass(defaults.overClass).addClass(defaults.outClass);
});
});
}
})
引入插件
<script type="text/javascript" src="js/plugins/bgcolor/jquery.bgcolor.js"></script>
<link rel="stylesheet" type="text/css" href="js/plugins/bgcolor/bgcolor.css">
效果
2.2 jQuery之Ajax实现省市县级联动(数据库版)
$(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>
效果