JQuery

什么是JQquery

  1. 它是一个轻量级的javascript类库
  2. jQuery优点:①总是面向集合,②多行操作集于一行 。
  3. 必须要导入js库()

初识JQquery

( f n ) 、 (fn)、 (fn)(document).ready(fn)与window.onload的区别?

  • 使用方法
window.onload =function(){
		alert("hello,jQuery3");
	}  
 	 $(document).ready(function(){
 		alert("hello,jQuery2");
 	})
	
	$(function(){
		alert("hello,jQuery1");
	})
/*  $(fn)、$(document).ready(function)是等价的位置, window.onload最后执行
		jsp的dome树结构加载完毕即刻调用方法
		window.onload最后执行
		jsp的dom树加载完,css/ js 等静态资源加载完毕执行
	*/

jQquery选择器

  • 标签选择器
$(function() {
//利用a标签获取实例
   	$("a").click(function(){
   		alert("利用a标签获取实例");
   	}); 
   })
  • id选择器
$(function() {
//利用id=a3获取jquery实例
		 $("#a3").click(function(){
			alert("利用id=a3获取jquery实例");
		});
	})
  • class选择器
$(function() {
		 //利用类选择器class=c1获取jquery实例
			$(".c1").click(function(){
			alert("利用类选择器class=c1获取jquery实例");
		}); 
	})
  • 包含选择器
$(function() {
		 //利用类选择器class=c1获取jquery实例
		  $("p a").click(function(){
			alert("利用包含选择器<p>里面包含<a>获取jquery实例");
		}); 
	})
  • 组合选择器
$(function() {
		//利用组合选择器多个标签用逗号隔开获取jquery实例
		  $("a,span").click(function(){
			alert("利用组合选择器多个标签用逗号隔开获取jquery实例");
		}); 
	})
  • 自定义选择器
$(function() {
		//讲解第二个参数的作用(在div标签内部寻找a标签,然后给找到的标签添加事件)
		//如果第二参数没有填写,那么默认是document
		  $("p","div").click(function(){
			alert("在div标签内部寻找a标签,然后给找到的标签添加事件");
		});  
	})

js对象与jquery对象的相互转换

  • 给标签添加事件
$(function() {
   	//在input里找到name=name1的标签添加事件
   	 $(":input[name='name1']").click(function() {
   		alert("在input里找到name=name1的标签添加事件");
   	});  
   })
  • 给点击事件直接添加代码内容
 $(function() {
   	  $(":input[name='name1']").click(function() {
   			//在给id=selId1的select的jquery实例上追加<option value='1'>湖南省</option>下拉框代码
   			$("#selId1").append("<option value='1'>湖南省</option>");
   		}); 
   			$(":input[name='name2']").click(function() {
   			//把<option value='1'>长沙</option>下拉框代码添加到id=selId2的select标签jQuery
   			$("<option value='1'>长沙</option>").appendTo("#selId2");
   		});
   })
  • 获取中的value值三种方法
var $h1 = $("#h1");//①根据id选择器获取
			alert($h1.val());
			//jquery对象转js对象
			var h1Node =$h1.get(0);//②单个形式
			var h1Node =$h1.get(0);//③数组集合形式
			alert(h1Node.value); */
			
			/* //获取<input type="hidden" id="h2" value="h2">中的value值两种方法
		    var h2Node =document.getElementById("h2");//①根据id获取到value=h1
			alert (h2Node.value);
		 
		    //js对象转jQuery对象 
		    var $h2Node = $(h2Node);
		    alert($h2Node.val()); */

事件源 当前元素(获取当前按钮的按钮值)

$(function() {
		$(":input").click(function() {
			alert(this.value);//获取当前标签input的value 事件源
			$("a").each(function(index,item) {
				alert(index+","+$(this).html()+","+$(item).html());//指的是当前元素
			});
		});
	})

使用jquery动态给table添加样式

$(function(){
		$("table").each(function(){
			//给默认值
			$("tr:eq(0)",this).addClass('head');
			$("tr:gt(0)",this).addClass('out');
			
			//添加动态效果
			$("tr:gt(0)",this).hover(function(){
				$(this).removeClass().addClass('over');
			},function(){
				$(this).removeClass().addClass('out');
			});
		});
		
	})

jquery插件

json的三种格式

  • 1 .对象
$(function() {
//json对象的字符串体现形式
		var jsonObj1 ={
				sid :'s001',
				sname :'zhangsan'
		};
		console.log(jsonObj1);
		alert(jsonObj1.sid);
})
    1. 列表/数组
//json数组的字符串体现形式
		var jsonArray1=[1,2,3,4,];
		console.log(jsonArray1);
		alert(jsonArray1);
  • 3.混合模式
//json混合模式的字符串体现形式
		var jsons ={id :3,hobby :['a','b','c']};
		console.log(jsons); 
		alert(jsons);
  • 后台json的三种体现形式
public class Demo1 {
	public static void main(String[] args) throws JsonProcessingException {
		
		//json对象
		Student stu1 =new Student("s001", "张三");
		ObjectMapper om =new ObjectMapper();
		System.out.println(om.writeValueAsString(stu1));
//		{"sid":"s001","sname":"张三"}
		
		//json数组
		Student stu2 =new Student("s002", "李四");
		List<Student> list1 =new ArrayList<>();
		list1.add(stu1);
		list1.add(stu2);
		System.out.println(om.writeValueAsString(list1));
//		{"sid":"s001","sname":"张三"}
//		[{"sid":"s001","sname":"张三"},{"sid":"s002","sname":"李四"}]
		
		//json混合格式
		Map<String, Object> map =new HashMap<>();
		map.put("total", 2);
		map.put("stu", list1);
		System.out.println(om.writeValueAsString(list1));
		
	}
}
  • javaBean与Map集合转换成json字符串格式是一样的
public class Demo2 {

	public static void main(String[] args) throws JsonProcessingException {
		Map<String, Object> stu1 =new HashMap<>();
		stu1.put("sid", "s001");
		stu1.put("sname", "张三");
		ObjectMapper om =new ObjectMapper();
		System.out.println(om.writeValueAsString(stu1));
//		{"sname":"张三","sid":"s001"}
		
		Map<String, Object> stu2 =new HashMap<>();
		stu1.put("sid", "s002");
		stu1.put("sname", "李四");
		List<Map<String, Object>> list1 =new ArrayList<>();
		
		list1.add(stu1);
		list1.add(stu2);
		System.out.println(om.writeValueAsString(list1));
//		[{"sid":"s001","sname":"张三"},{"sid":"s002","sname":"李四"}]
//		[{"sname":"李四","sid":"s002"},{"sname":"李四","sid":"s002"}]
	}
}
  • json死循环问题
	//解决死循环的方法
 //1、由双向绑定改成单向绑定,也就说将彼此之间的关心交于一方维护。
 // 2、@JsonIgnore :将彼此循环调用的属性忽略,不参于对象转成json格式
public class Demo3 { 
	public static void main(String[] args) throws JsonProcessingException {
		Student stu1  =new Student("s001", "aaaa");
		Student stu2 =new Student("s002", "bbbb");
		Teacher tea1 =new Teacher("t001", "1111", null);
		Teacher tea2 =new Teacher("t002", "2222", null);
		Set<Teacher> teas =new HashSet<>();
		teas.add(tea1);
		teas.add(tea2);
		stu1.setTeas(teas);
		
		Set<Student> stus =new HashSet<>();
		stus.add(stu1);
		stus.add(stu2);
		tea1.setStus(stus);
		ObjectMapper om =new ObjectMapper();
		System.out.println(om.writeValueAsString(stu1));
	}
}

$.extend和 $.fn.extend

$(function() {

// $.extend(jsonObj2,jsonObj1); 
//用后面的对象扩充定一个对象
//讲解扩充值覆盖的问题,之前已经扩充的属性值会被后面的对象所覆盖,
//如果后面对象有新的属性,会继续扩充
	
$.extend({
			hello:function(){
				alert('我来了');
			}
		});
	
	 	$.hello();
		
		//$.fn.extend是用来扩充jquery实例的属性或者方法所用
		
		$.fn.extend({
			sayhello:function(){
				alert('早丫丫!');
			}
		});
		
		$("#yellow").sayhello();
		alert("yellow");
		
	})

jQuery的ajax请求

  • Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java

对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

  • 利用jQuery的ajax做一个省市县三级联动
    JsonBaseDao
/**
*1.创建一个实体类的实例
*2.给创建的实例属性赋值
*3.将添加完内容的实体类添加到list集合中
*/
public class JsonBaseDao extends BaseDao<Map<String,Object>>{//继承BaseDao引用的泛型类方法
public List<Map<String, Object>> executeQuery(String sql, PageBean pageBean) {
		return super.executeQuery(sql, pageBean, new Callbac<Map<String, Object>>() {
			public List<Map<String, Object>> foreach(ResultSet rs) {
				List<Map<String, Object>> list=new ArrayList<>();
				ResultSetMetaData md = rs.getMetaData();//获取行跟列的数值 获取源数据
				int count=md.getColumnCount();//返回列
				Map<String, Object> map=null;//可多次创建引用
				while(rs.next()) {
					map=new HashMap<>();
					for (int i = 1; i <= count; i++) {
						map.put( md.getColumnName(i), rs.getObject(i));//每一列的数据
					}
					list.add(map);
				}
				return list;
			}
		});
	}

JsonUtils

/**
*专门用来处理json数据的工具包
*从paramMap拿到咱们所需要用到的查询维度,用于sql语句拼接
*paramMap  获取从jsp页面传递到后台的参数集合 (req.getParamVa)
*/
public class JsonUtils{
	public static String getParamVal(Map<String,String[]> paramMap,String Key){
	if(paramMap  != null&& paramMap.size()>0  ){
			String [] vals  =paramMap.get(key);
			if(vals != null  && vals.length >0){
			 String val=	Arrays.toString(vals);
			 return val.substring(1, val.length()-1);return  "  ";return  "  ";
	}

}

RegionDao

public class RegionDao extends JsonBaseDao{//继承于JsonBaseDao
	public List<Map<String, Object>> list(Map<String, String[]> paramMap,PageBean pageBean){//带参数的分页查询方法
		String id = JsonUtils.getParamVal(paramMap, "ID");//调用处理json数据的工具包
		String sql="select * from ch_region where 1=1";
		if(StringUtils.isBlank(id)) {
			sql+=" and parent_id=7459";
		}
		else {
			sql+=" and parent_id="+id;
		}
		return super.executeQuery(sql, pageBean);
	}

RegionServlet

public class RegionServlet extends HttpServlet {
	
	private static final long serialVersionUID = 6826185684173095882L;
	private RegionDao regionDao=new RegionDao();
	
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html;charset=UTF-8");
		PrintWriter out = resp.getWriter();
		List<Map<String, Object>> list = regionDao.list(req.getParameterMap(), null);
		ObjectMapper om=new ObjectMapper();
		
		out.println(om.writeValueAsString(list).toString());
		out.flush();
		out.close();
	}	
}
//还有简单的servlet配置我的省略了

运行的jsp界面

<title>ajax实现省市县三级联动</title>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$(function(){
		$.ajax({
			url:"/reg.do",
			success:function(data){
				for(index in data){
					//把数据追加到后面
					$("#province").append("<option value='"+data[index].ID+"'>"+data[index].REGION_ID+"</option>")
				}
			},
			dataType:"json"
		});
		
		$("#province").change(function(){
			$("option:gt(0)","#city").remove();//清空追加的值
			$.ajax({
				url:"/reg.do?ID="+this.value,//直接的id值
				success:function(data){
					for(index in data){
						$("#city").append("<option value='"+data[index].ID+"'>"+data[index].REGION_ID+"</option>")
					}
				},
				dataType:"json"
			});
		})
		
		$("#city").change(function(){
			$("option:gt(0)","#county").remove();//清空追加的值
			$.ajax({
				url:"/reg.do?ID="+this.value,//直接的id值
				success:function(data){
					for(index in data){
						$("#county").append("<option value='"+data[index].ID+"'>"+data[index].REGION_ID+"</option>")
					}
				},
				dataType:"json"
			});
		})
	})
</script>
</head>
<body>
	地址:&nbsp;&nbsp;
	<select id="province">
		<option selected="selected">---请选择省份---</option>
	</select>
	<select id="city">
		<option selected="selected">---请选择城市---</option>
	</select>
	<select id="county">
		<option selected="selected">---请选择县区---</option>
	</select>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值