jQuery 选择器&插件&ajax

  • jQuery 选择器&插件&ajax
  • jQuery 简介
  • jQuery 之 选择器
  • jQuery 的工厂方法
  • this 指针
  • jQuery 之 插件
  • json的三种格式
  • jQuery 插件开发实例
  • jquery 之 ajax
  • jackson
  • 将java 转为 json
  • json 死循环


jQuery 选择器&插件&ajax

jQuery 简介

什么是jQuery?

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(JavaScript框架)。

jQuery设计的宗旨是“write Less,Do More”,意思就是:写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

jQuery的核心特性:

  • 具有独特的链式语法和短小清晰的多功能接口;
  • 具有高效灵活的css选择器,并且可对CSS选择器进行扩展
  • 具有便捷的插件扩展机制和丰富的插件。

jQuery优点:

  • 总是面向集合
  • 多行操作集于一行

jQuery 之 选择器

jquery 样式选择器 jquery选择器功能是什么_jquery 样式选择器

1、导入js库

<script type=“text/javascript” src=""></script>

2、$(fn)做为程序入口

jQuery程序的入口:

  • $(document).ready(fn)
  • $(fn);

$(fn)、$(document).ready(fn)、window.onload有什么区别?

$(fn)、$(document).ready(fn)是等价的,哪个代码在前面就哪个先执行,jsp的dom树结构加载完毕即刻调用方法;
window.onload最后执行,jsp的dom树加载完毕,css.js等静态资源加载完毕执行。

jQuery 的工厂方法

jQuery 有三种工厂方法 。

1、 jQuery (exp[,context])

  • 标签选择器
  • ID选择器
  • 类选择器

exp:选择器
context:上下文,环境/容器,documemt

注意:

选择器,css选择器
$就是jQuery简写

包含选择器:E1 E2
组合选择器:E1,E2,E3
自定义选择器::exp

2、jQuery(html)

html:基于html的一个字符串

3、jQuery(element)

element:js对象,表示一个html元素对象

this 指针

this 指针的作用:

  • 1、事件源(获取当前按钮的按钮值)
  • 2、当前元素(点击按钮,获取所有a标签的值)
  • 3、在插件中的作用,看下图所示:
  • jquery 样式选择器 jquery选择器功能是什么_javascript_02


jQuery 之 插件

jquery 样式选择器 jquery选择器功能是什么_java_03

jQuery 插件简介

jQuery 插件:

用jquery写一些js代码能实现具体的功能,直接将该js文件引入进页面就可调用,可以快速开发。

$.extend 和 $.fn.extend:

  • $.extend:对象的扩展(或继承)
$.extend(obj1,obj2,obj3[,...])

$.extend(obj1,obj2)

$.extend(obj1)//$.method=function(options){...};
  • $.fn.extend
$.fn.extend(obj1)//$.fn.method=function(options){...};

json的三种格式

  • 1、对象
    如: {sid:‘001’,sname:‘小样’}
  • 2、列表/数组
    如: [1,2,3,4]
  • 3、混合模式
    如: {id:001,hobby:[‘aa’,‘bb’,‘cc’]}

请参考重要代码,对比json的三种格式(前台 & 后台):

json 前台展示:

<%@ 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-3.3.1.js"></script>
<title>Insert title here</title>
<script type="text/javascript">

	$(function(){
		
		 //json对象的字符串体现形式
		var jsonObj1 = {sid:'s001',sname:'南柱赫'};
		//console.log(jsonObj1);
		
		//json数组的字符串体现形式
		var jsonArray1 = [1,2,3,4];
		//console.log(jsonArray1);
		
		//json混合模式的字符串体现形式
		var jsons = {id:1,hobby:["aa","bb","cc"]};
		//console.log(jsons);
		
		//$.extend用来扩充jquery类的属性和方法
		var jsonObj2 = {};
		//$.extend(jsonObj2,jsonObj1);//用后面的对象扩充第一个对象
		//console.log(jsonObj2);
		
		//之前已经扩充的属性值会被后面的对象覆盖,如果后面对象有新的属性,会继续扩充
		//解决扩充覆盖问题
		var jsonObj3 = {sid:'s003',sname:'伊清',hobby:['rap','唱跳']};
		$.extend(jsonObj2,jsonObj1,jsonObj3);
		console.log(jsonObj2);
	
		$.extend({
			hello:function(){
				alert('来啦来啦');
			}
		});
		
		$.hello();
		
		//$.fn.extend是用来扩充jQuery实例的属性、方法
		$.fn.extend({
			sayHello:function(){
				alert('Hello!');
			}
		});
		
		$("#yellow").sayHello();
		alert("yellow");
		
	})
</script>
</head>
<body>
	<span id="yellow">yellow</span>
</body>
</html>

json 后台展示:

jquery 样式选择器 jquery选择器功能是什么_javascript_04

jQuery 插件开发实例

jQuery插件的添加,其实就是给jQuery添加新的实例方法或类方法,然后将功能封闭在其中

重要代码如下:

自定义 css:

jquery 样式选择器 jquery选择器功能是什么_javascript_05


自定义 js:

jquery 样式选择器 jquery选择器功能是什么_javascript_06


jsp界面实例:

在jsp界面实例中直接引用相关的css 和 js 即可!!!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ include file="/jsp/common/head.jsp" %>
<!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">
$(function(){
	$("table").bgColor({
		head : 'fen',
		out : 'yellow',
		over : 'red'
	});
	
})
</script>
</head>
<body>
	<table id="t1" border="1" width="90%">
		<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>
	
	<table id="t2" border="1" width="90%">
		<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>

注意 :

在大型项目中,大部分时候需要在多个jsp界面调用多个css 和 js ,这时,我们可以再写一个head.jsp,在这个head.jsp 界面直接调用需要用到的css 和 js,然后,在有需要的jsp界面直接调用head.jsp就OK ! 下面就是一个例子。

head.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE>
<link href="${pageContext.request.contextPath }/jquery/table/css/jquery.table.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-3.3.1.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/jquery/table/js/jquery.table.js"></script>

在界面调用,代码如下:

<%@ include file="/jsp/common/head.jsp" %>

这样岂不是减少了代码量,还提高了开发效率。


jquery 之 ajax

jackson

什么是 jackson?

Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象
和xml文档,同样也可以将json、xml转换成Java对象

jackson 核心代码:

ObjectMapper mapper = new ObjectMapper();
  mapper.writeValueAsString(obj);
  
  int count = md.getColumnCount();
  map.put(md.getColumnName(i), rs.getObject(i));

将java 转为 json

注意:

javaBean与Map集合转换成json字符串的格式是一样的,论证如下:

jquery 样式选择器 jquery选择器功能是什么_javascript_07

json 死循环

处理方式:

  • 1、由双向绑定改成单向绑定,将彼此之间的关系交于一方维护
  • 2、@JsonIgnore:将彼此循环调用的属性忽略,不参与对象转成json格式

重要代码如下:

package com.dj;

import java.util.HashSet;
import java.util.Set;

import com.dj.entity.Student;
import com.dj.entity.Teacher;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * json死循环
 * 
 * 处理方式:
 * 1、由双向绑定改成单向绑定,将彼此之间的关系交于一方维护
 * 2、@JsonIgnore:将彼此循环调用的属性忽略,不参与对象转成json格式
 * 
 * @author 86182
 *
 */
public class Demo3 {

	public static void main(String[] args) throws JsonProcessingException {
		
		Student stu1 = new Student("s-001", "南柱赫");
		Student stu2 = new Student("s-002", "李钟硕");
		
		Teacher tea1 = new Teacher("t-001", "张艺兴", null);
		Teacher tea2 = new Teacher("t-002", "王嘉尔", 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));
		
	}

}

处理后的打印效果:

jquery 样式选择器 jquery选择器功能是什么_javascript_08