JavaScript
JavaScript
以ES6为例
JavaScript的引入
-
使用script标签
- 在head标签中使用script标签
<script type="text/javascript"> alert("hello javascript") </script>
-
单独写一个JavaScript文件
- 用script标签引入
<script type="text/javascript" src="js文件地址"> </script>
-
script只能选一个功能,引用文件或者直接写js代码
-
要想实现两个功能,可以写第二个script标签
-
JavaScript变量
-
值类型
- 数值类型 number--------------五种数据类型
- 字符串类型 Stringr--------------五种数据类型
- 布尔类型 booleanr--------------五种数据类型
- 特殊的值
- undefined 未定义,变量未初始化默认是undefinedr--------------五种数据类型
- let test = null 也是object类型,只是这个对象没有值
- 不给赋值才是未定义
- null 空值
- NAN not a number 非数值
- undefined 未定义,变量未初始化默认是undefinedr--------------五种数据类型
-
引用类型
- 函数类型 function 变量可以指向一个函数
- 对象类型 objectr--------------五种数据类型
-
typeof(变量名) 方法可以返回变量的类型------------返回的结果是String类型
-
关系运算符
- == 等于
- 字面值比较
- === 全等于
- 除了字面值,还会比较两个变量的数据类型
- == 等于
-
逻辑运算
- && 且运算
- a && b &&c ,都为真的情况,返回最后一个变量的值
- a && b &&c,有一个为假的情况,返回第一个假
- || 或运算
- a|| b||c 都为假时,返回最后一个变量的值
- a|| b||c 一个为真,返回第一个真
- ! 取反
- && 且运算
-
所有的变量,都可以作为boolean类型的变量使用
- 0,null,undefined,""空的字符串,都认为是false;
-
var 是全局变量
- var 可以声明多次
- 默认提升变量声明
-
let 是局部变量
- let 只能声明一次
-
const 常量
- 一但声明必须初始化,否则会报错
解构赋值
数组解构:
// 传统
let a = 1, b = 2, c = 3// ES6
let [x, y, z] = [1, 2, 3]
对象解构
let user = {name: 'Helen', age: 18}
// 传统
let name1 = user.name
let age1 = user.age// ES6
let { name, age } = user//注意:结构的变量必须是user中的属性
模板字符串
加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,
还可以在字符串中加入变量和表达式
多行字符串
// 多行字符串
let string1 =Hey, can you stop angry now?
字符串插入变量和表达式
// 变量名写在 {} 中,{} 中可以放入 JavaScript 表达式。
let name = "Mike"
let age = 27
let info =My Name is ${name},I am ${age+1} years old next year.
字符串中调用函数
function f(){
return "have fun!"
}
let string2 =Game start,${f()}
声明对象简写
对象的属性引入外部 的简写
const age = 12
const name = "Amy"// 传统
const person1 = {age: age, name: name}// ES6
const person2 = {age, name}
定义方法简写
在对象里面的才叫方法,外面的叫函数
// 传统
const person1 = {
sayHi:function(){
console.log("Hi")
}
}
person1.sayHi();//"Hi"// ES6
const person2 = {
sayHi(){
console.log("Hi")
}
}
person2.sayHi() //"Hi"
对象拓展运算符
拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。
不能直接=另一个对象,否则同指针,以前拷贝对象需要数组循环,现在只需要扩展运算符三个点
// 1、拷贝对象
let person1 = {name: "Amy", age: 15}
let someone = { ...person1 }// 2、合并对象
let age = {age: 15}
let name = {name: "Amy"}
let person2 = {...age, ...name}
箭头函数
箭头函数多用于匿名函数的定义
当箭头函数没有参数或者有多个参数,要用 () 括起来
有多行语句,用 {} 包裹起来,表示代码块
只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
// 传统
var f1 = function(a){
return a
}// ES6
var f2 = a => a//箭头函数
var f3 = (a,b) => {
let result = a+b
return result
}// 前面代码相当于:
var f4 = (a,b) => a+b
数组
-
let 数组名 = []; 空数组
- length
-
let 数组名 = [1,"abc",true]; 定义数组并同时赋值
- 类型可以不一样----------理解为动态
-
arr[9] = “abc”;
- 只要通过数组下标赋值,最大的下标值,会自动的给数组扩容
- ---------赋值的时候才会,理解为动态
- 跳过其他下标赋值的时候,其他下标没有定义的值为undefined
- 数组可以遍历
-
数组的函数
- concat(数组)数组拼接
reverse()->数组反转
join(规则):将一个数组通过分隔符拼接成一个字符串,与字符串中的split功能相反
sort()排序
pop():删除数组中最后一个元素,返回的是被删除的元素
push():往数组最后添加一个或者多个元素,返回的是被添加的元素
- concat(数组)数组拼接
-
for in 便历出来的是属性
for of 遍历的是value
函数
-
使用function关键字定义
function 函数名(形参列表){ 函数体 } 形参列表不需要写var声明,直接写变量名即可 function 函数名(a,b){ let result = 0; if(typeof(a) =="number"){ result = a+b; } return result; }
- 形参不需要var声明,直接写变量名------------理解为动态
- 返回值直接写return
-
使用变量引用
- let 函数名 = function (形参列表){ 函数体}
- 类似匿名函数
-
js不允许重载,会覆盖上一次的定义
-
有参函数也能用无参调出来的原因,或者无参,通过有参名调用
- 函数的arguments隐形参数,能在function函数内
- 不需要定义,却可以直接用来获取所有参数的变量,隐参
- 类似 可变参数,类似数组,通过下标取值
- 即使写两个参数,实际上也可以传多个,通过arguments取值即可------理解为动态
-
typeof可以判断类型
- typeof( a) =="number"
- typeof返回的结果是字符串!!!!!!
- typeof( a) =="number"
-
可以不使用变量引用匿名函数,一般用来和事件绑定
-
JS函数没有重载,后面重名方法会把之前的覆盖
-
内置函数
-
1.parseFloat(String s)->将字符串转成小数(number)
2.parseInt(String s)->将字符串转成整数(number)3.注意:js是模糊匹配,将字符串转成number类型时,如果是数字开头,就只转数字部分
-
JS自定义对象
-
object自定义对象
- let 变量名 = new Object(); 空对象
- 变量名.属性名 = 值; 定义属性-----------理解为动态
- 变量名.函数名 = function(){} 定义一个函数-----------理解为动态
let test= new Object(); test.name = "华仔"; test.age = 18; test.fun = function(){ return "姓名:"+this.name+",年龄:"+this.age; }
- 对象的访问
- 用变量名.属性(函数) 访问函数
-
{} 大括号自定义对象
-
let 变量名 = {}; 空对象
-
定义属性,在大括号里,属性名和值冒号隔开,逗号结尾,最后一个不用
let test = { 属性名:值, 逗号结尾 属性名:值, 函数名:function(){} 最后一个属性不用逗号.类似mysql };
-
对象的访问方式不变
-
JavaScript事件
常用事件--------------设备和页面交互响应
- onload 加载完成事件
- 常用于js代码初始化
- onclick 单击事件
- 常用于按钮的点击响应操作
- onblur 失去焦点事件
- 常用于输入框失去焦点后验证输入内容是否合法
- onchange 内容发生改变事件
- 常用于下拉列表和输入框内容发生改变后操作
- onsubmit 表单提交事件
- 常用来表达提交前,验证所以表单项是否合法
事件的注册------------绑定,告诉浏览器事件响应后要执行的操作
- 静态注册
- 通过html标签的事件属性直接赋予事件响应后的代码
- 动态注册
- 先通过js代码得到标签的dom对象,通过dom对象.事件名=function(){}
- 基本步骤
- 获取标签对象
- 标签对象.事件名=function(){}
//静态写法------onload事件
function load(){
aler("页面加载完成之后就会执行onload事件");
}
//onload事件动态注册,固定写法
window.onload = function(){
aler("页面加载完成之后就会执行onload事件");
}
<body onload = "load();"> 如果是动态写法,则什么都不用写
</body>
//onclick事件动态注册
window.onload = function(){
//1.获取标签对象
let btn = document.getElemenById("btn");
//2.通过标签对象.事件名 = function(){}
btn.onclick = function(){
aler("onclick事件");
}
}
<button id="btn">按钮</button>
//动态注册onblur事件
window.onload = function(){
//1.获取标签对象
let pass = document.getElemenById("btn");
//2.通过标签对象.事件名 = function(){}
pass.onblur = function(){
console.log("动态注册失去焦点事件")
}
}
密码:<input id="pass" type = "text">
//动态注册
window.onload = function(){
let sel = document.getElementById("sel");
sel.onchange = function(){
console.log("选择已经改变")
}
}
<select id="sel">
<option>
选择1
</option>
<option>
选择2
</option>
</select>
//动态注册
window.onload = function(){
let form1 = document.getElementById("form1");
form1.onsubmit = function(){
console.log("如果表单项有一个不合法,则阻值提交")
return false;
}
}
//动态注册表单提交事件
<form action="#" method="post" id="form1">
<input type ="submit" value="静态注册"/ >
</form>
- document对象
- 文档树,表示整个页面
- getElemenById解析
- get 获取
- Element 元素(标签)
- By 通过
- Id id属性
- 通过id属性获取标签对象
- console.log()
- 控制台对象.向浏览器打印输出,用于测试使用
DOM模型
-
document object model 文档对象模型
- 把文档中的标签,属性,文本,转换成对象来管理
-
html标签对象化
<body> <div id="div1"> 我是内容 </div> </body>
//模拟对象化 class Dom{ private String id; id属性 private String tagName; 标签名 private Dom parentNode; 父节点 private list<Dom> children; 子节点 private String innerHTML; 元素内容 }
-
document对象———–重点
- 管理所有的HTML文档内容
- 树形结构文档,有层级关系
- 标签对象化
- 可以通过document访问所有的标签对象
-
document对象中的方法介绍--------重点
- document.getElementById(id)---------优先
- 通过标签的id属性查找标签dom对象,id是标签的id属性值
- document.getElementsByName(name)-----不唯一,所以有s
- 通过标签的name属性查找标签dom对象,name是标签的name属性值
- document.getElementsByTagName(tagname)-----不唯一,所以有s
- 通过标签名查找标签dom对象,tagname是标签名
- document.createElement(tagName)
- 通过给定的标签名,创建一个标签对象,tagName就是要创建的标签名
- document.querySelector("css选择器“) #标签名 .类名 标签名
- 通过css选择器获取一个标签
- document.querySelectorAll("css选择器“)
- 通过css选择器获取一组标签,返回数组
- document.getElementById(id)---------优先
ById实例
//获取输入框的内容,验证是否合法
//必须是由字母,数字,下划线组成,长度是5-12位
<script type="text/javascript">
//获取输入框的内容,验证是否合法
//必须是由字母,数字,下划线组成,长度是5-12位
window.onload = function () {
//获得标签对象
let ptn = document.getElementById("pt");
//获得按钮对象
let pt = document.getElementById("ptn");
//点击事件
pt.onclick = function(){
//获取用户输入
let userinput = pt.value;
//正则表达式
let match = /^\w{5,12}$/;
//正则方法
if (match.test(userinput)){
alert("用户名合法"+userinput);
return true;
}else {
alert("用户名不合法"+userinput);
return false;
}
}
}
</script>
<form action="#" method="post">
校验:<input type="text" id="pt"><br>
<Button id="ptn">正则校验</Button>
</form>
ByName实例
<script type="text/javascript">
window.onload = function () {
//获得按钮name
let checkAll = document.getElementById("checkAll");
let checkNo = document.getElementById("checkNo");
let checkReverse = document.getElementById("checkReverse");
//返回的是一个集合.跟数组一样 ,集合的元素都是dom对象
let hobbys = document.getElementsByName("hobby");
//全选
checkAll.onclick = function () {
for(let i = 0 ;i<hobbys.length;i++){
hobbys[i].checked = true;
}
}
checkNo.onclick = function () {
for(let i = 0 ;i<hobbys.length;i++){
hobbys[i].checked = false;
}
}
checkReverse.onclick = function () {
for(let i = 0 ;i<hobbys.length;i++){
//取反
hobbys[i].checked = !hobbys[i].checked;
}
}
}
</script>
<body>
兴趣爱好
<input type="checkbox" name="hobby" value="php">php
<input type="checkbox" name="hobby" value="java">java
<input type="checkbox" name="hobby" value="js">js
<br>
<button id="checkAll">全选</button>
<button id="checkNo">全不选</button>
<button id="checkReverse">反选</button>
</body>
ByTagName实例和ByName一样
//返回的是一个集合.跟数组一样 ,集合的元素都是dom对象
let inputs = document.getElementsByTagName("input");
-
正则表达式-----regexp
- 使用new RegExp("")创建正则
- 使用双斜杠 / /
- 使用规则
- /e/ 是否包含这个字符,可以为任意字符
- /[abc]/ 表示字符串是否包含方括号里任意一个字符
- /[A-z]/ 是否包含任意一个字母
- [a-z]-----[A-Z]---[A-z]---[0-9] 同理
- 元字符
- /\w/ 查找任意一个单词字符,
- 包括 a-z,A-Z,0-9,下划线
- \W 大写的w表示非单词字符,取反?
- \d 查找数字 大写的D是非数字
- \s 查找空白字符 大写的S非空白字符
- /\w/ 查找任意一个单词字符,
- 量词
- n+ 匹配至少一个 n是任意一个字符
- n* 零个或多个
- n? 零个或一个
- n{x} 连续的x个n
- n{x,y} 至少连续的x个,最多连续的y个
- n{x,} 至少连续的x个
- n$ 以这个字符结尾的字符串
- ^n 以这个字符开头的字符串
- /^n{3,5}$/ 要求字符串从头到尾必须完全匹配,差一个都不行
-
节点的常用属性和方法
- 节点就是标签对象
- 方法
- getElementByTagName()
- 获取当前节点的指定标签名子节点
- appendChild(ochildNode)
- 可以添加一个子节点,ochildnode就是要添加的节点
- getElementByTagName()
- 属性
- childNodes
- 当前节点的所有子节点
- firstChild
- 第一个子节点
- lastChild
- 最后一个子节点
- parentNode
- 当前节点的父节点
- nextSibling
- 下一个节点
- previousSibling
- 上一个节点
- className
- 获取或设置标签的class值
- innerHtml
- 获取或设置元素内容------包括标签
- innerText
- 获取或设置元素的文本--------只有文本
- childNodes
和java的区别,java默认是精准匹配,js是弱类型语言,需要^和$精准匹配
可以添加第二个参数,常用的是i,表示忽略大小写
let test = /^123$/i
JQuery
jq的引入
-
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
-
$ 核心函数-------根据传参不同,返回内容不同
-
传入参数是函数时
- 表示页码加载完成之后,相当于widow.onload
-
传入参数是html字符串时,根据字符串创建元素节点对象
$( "<div><span>文本1</span></div>" ).appendTo("body");
-
传入参数是选择器字符串时
$("#id属性值"); 根据id查询标签对象 $("标签名"); 根据标签名查询标签对象 $(".class属性值"); 根据class属性查询标签对象
-
传入参数是DOM对象时
-
把dom对象转换成jq对象
-
-
jQuery对象和dom对象
-
dom对象
- 通过getElementById 查询的标签对象
- 通过getElementsByName 查询的标签对象
- 通过getElementsByTagName 查询的标签对象
- 通过createElement 创建的标签对象
-
jQuery对象
- 通过jq的api创建的对象
- 通过jq包装的dom对象
- 通过jq的api查询的对象
- 本质是dom对象的数组+jq提供的一系列功能函数
-
dom对象和jQuery对象互转-------重点
- 先有dom对象
- $(dom对象) 就可以转为jQuery对象
-
先有jQuery对象
- jQuery对象[下标] 取出相应的dom对象
jQuery选择器----重点
- 基本选择器----重点
- # id选择器 根据id查找标签对象
- .class 选择器 根据class查找标签对象
- element 选择器 根据标签名查找标签对象
- * 选择器 表示任意的所有元素
- 多个选择器用逗号隔开 合并选择器
- p.myclass 这种类似,p标签里面类型为myclass的标签
- 层级选择器----重点
- ancestor descendant 后代选择器, 给定的祖先元素下匹配所有的后代元素
- 空格隔开 $("form input");
- parent > child 子元素选择器 ,给定的父元素下匹配所有的子元素
- 直接后代,子孙元素不算
- prev + next 相邻元素选择器 匹配所有紧接在prev元素后的next元素
- prev ~ sibings 之后的兄弟元素选择器 匹配prev元素之后的所有sibings元素
- 查找同级的兄弟元素
- ancestor descendant 后代选择器, 给定的祖先元素下匹配所有的后代元素
过滤选择器
-
基本过滤器
-
:first 获取匹配的第一个元素-----------------有点用
$("li:first"); -
:last 获取匹配的最后一个元素------------有点用
$("li:last"); -
:not 去除和选择器匹配的元素
$("input:not(:checked)");-------查找所有未选中的input元素 -
:even 所有为偶数的元素
$("tr:even");------索引从0开始 -
:odd 所有奇数的元素
$("tr:odd");------索引从0开始 -
:eq(index) 匹配一个给定索引值的元素
$("tr:eq(1)"); -
一个括号可以一直冒号下去
-
内容过滤器
- :contains(text) 匹配包含给定文本的元素
- :empty 匹配所有不包含子元素或文本的空元素
- :parent 匹配含子元素或者文本的元素--------非空元素
- :has(selector) 匹配含义选择器所匹配的元素
- :contains(text) 匹配包含给定文本的元素
-
属性过滤器
- [attribute] 匹配包含给定属性的元素------------有点用
- div[id]----------包含id属性的元素
- [attribute = value] 匹配给定的属性是某个特定值的元素-------------有点用
- input[name='news']---------有name属性值是news的input标签
- [attribute != value] 不含有指定值的属性
- 不等,取反
- [attribute ^= value] 某个值开头的属性
- value值开头的
- [attribute $= value] 某个值结尾的属性
- value值结尾的
- [attribute *= value]
[attrSel1][attrSel2][attrSel1][attrSelIN]
满足多个
-
表单过滤器
-
:input 匹配所有的input,textrarea,select和button元素
-
:text 匹配所有的文本输入框 ------------有点用
-
:password 匹配所有的密码输入框---------------有点用
-
:radio 匹配所有的单选框---------------有点用
-
:checkbox----------------所有的复选框------------有点用
-
:submit 匹配提交按钮
-
:hidden 匹配所有不可见 的元素
- display:none
-
-
表单属性
-
:checked 匹配所有选中的元素
-
复选和单选,不包括select的option
- $("input:checked")
-
:selected 匹配选中的option元素
- $("select option:selected")
-
-
jQuery的方法
-
css方法,可以设置样式----貌似两个都是字符串
- $("*").css("background","red");
-
val方法,可以操作表单项的value属性值
- $(":text:enabled").val("我是赋值") 可以设置或者获取val值
-
each()方法可以遍历
$names.each( function(){ console.log(this.value); } )
-
confirm();
确认提示方法,传什么就提示什么- 用户点击确定返回true,反之亦然
-
.addClass()
方法用来给标签添加类 -
removeClass() 方法移除类
-
prop() 可以设置或获取属性值---推荐操作checked,readOnly,selected,disabled等
- 可以用其调整标签的属性,如果不存在表示false,存在则表示true
-
html() 设置或获取元素内容
- 和innerHtml一样 在标签里添加 HTML 标签和文本
-
text() 获取或设置文本
- 和innerText一样 不会解析html标签
-
remove() 完全移除 HTML 标签
-
appendTo()
选取 HTML 标签并将其添加到另一个标签里面 -
clone() 把元素从一个地方复制到另一地方
-
$("#target5").clone().appendTo("#left-well");
-
-
parent() 访问被选取标签的父标签
-
children() 访问被选取标签的子标签
jQuery元素的筛选
- eq() 获取给定索引的元素
- first() 获取第一个元素
- last() 获取最后一个元素
- is(exp) 判断是否匹配给定的选择器,有一个匹配就是true
- has(exp) 包含匹配选择器的元素的元素
- not(exp) 删除匹配选择器的元素
- children(exp) 返回匹配给定选择器的子元素
- 功能和parent > child 一样
- find(exp) 给定选择器的后代元素
- $("p").finde("span")
jQuery属性操作
-
不传参是获取,传参是设置
-
html() 设置或获取元素内容
- 和innerHtml一样
-
text() 获取或设置文本
- 和innerText一样
-
val() 设置或获取表单项的value值
-
attr() 可以设置或获取属性值-----不推荐操作checked,readOnly,selected,disabled等
- 因为操作上面的话,会出现undefined,表示错误
- 一个参数表示你要获取的属性值,两个参数表示设置属性值
- $(":checkbox:first").attr("name"); 获取name属性的值
- $(":checkbox:first").attr("name","abc"); 设置name属性的值为abc
- 还可以操作非标准属性,比如自定义属性,abc啥的
-
prop() 可以设置或获取属性值---推荐操作checked,readOnly,selected,disabled等
- 操作上面,如果不存在表示false,存在则表示true
//全选和全不选
<script type="text/javascript">
//相当于window.onload
$(function () {
//全选
$("#checkedAllBtn").click(function () {
//获得所有的复选框
$(":checkbox").prop("checked", "true");
});
//全不选
$("#checkedNoBtn").click(function () {
$(":checkbox").prop("checked", false);
}
);
//反 选
$("#checkedRevBtn").click(function () {
//查询球类的复选框
$(":checkbox[name='items']").each(function () {
this.checked = !this.checked;
});
//检查是否满选
//获取全部球类的个数
let len = $(":checkbox[name='items']").length;
//获得选中的球类个数
let count = $(":checkbox[name='items']:checked").length;
$("#checkedAllBox").prop("checked",len==count);
});
//提交按钮事件
$("#sendBtn").click(function () {
//获得勾选的球类
//获得选中的球类的值
$(":checkbox[name='items']:checked").each(function () {
this.value;
});
});
//全选全不选按钮
$("#checkedAllBox").click(function () {
//获得所有的球类框
//this.checked意思是和当前选中的状态一致
$(":checkbox[name='items']").prop("checked", this.checked);
});
//给全部球类绑定单机事件
$(":checkbox[name='items']").click(function () {
//检查是否满选
//获取全部球类的个数
let len = $(":checkbox[name='items']").length;
//获得选中的球类个数
let count = $(":checkbox[name='items']:checked").length;
$("#checkedAllBox").prop("checked",len==count);
});
});
</script>
<form method="post" action="">
你爱好的运动是?<input type="checkbox" id="checkedAllBox" />全选/全不选
<br />
<input type="checkbox" name="items" value="足球" />足球
<input type="checkbox" name="items" value="篮球" />篮球
<input type="checkbox" name="items" value="羽毛球" />羽毛球
<input type="checkbox" name="items" value="乒乓球" />乒乓球
<br />
<input type="button" id="checkedAllBtn" value="全 选" />
<input type="button" id="checkedNoBtn" value="全不选" />
<input type="button" id="checkedRevBtn" value="反 选" />
<input type="button" id="sendBtn" value="提 交" />
</form>
jQuery增删改查
- 内部插入
- appendTo() 当前调用的元素插到括号内的子元素末尾---最后一个子元素
- prependTo() 当前调用的元素插到括号内的子元素前面-----第一个子元素
- 外部插入
- insertAfter() 当前调用的元素插到括号内的元素末尾------平级
- insertBefore() 当前调用的元素插到括号内的元素前面--------平级
- 替换
- replaceWith() 括号内的元素替换调用者元素
- replaceAll() 用括号的元素替换所有的调用元素-----比如所有的div
- 删除
- remove() 删除调用者
- enpty() 清空调用标签的内容
jQuery动态删除和添加
<script type="text/javascript">
$(function () {
//创建一个用于删除的可重复用的函数
let deletefun = function(){
//查找当前的行元素
let trObject = $(this).parent().parent();
let name = trObject.find("td:first").text();
//确认提示方法,传什么就提示什么
if (confirm("是否确认删除"+name)){
trObject.remove();
}
//防止标签跳转
return false;
};
//添加按钮
$("#addEmpButton").click(function () {
//获得输入框姓名,工资,邮箱等
let name = $("#empName").val();
let email = $("#email").val();
let salary = $("#salary").val();
//添加数据到表格中,获取行标签对象
let trObject = $("<tr>" +
"<td>"+name+"</td>" +
"<td>"+email+"</td>" +
"<td>"+salary+"</td>" +
"<td><a href=\"deleteEmp?id=001\">Delete</a></td>" +
"</tr>");
//添加到显示数据的表格中
trObject.appendTo($("#employeeTable"));
//绑定a标签
trObject.find("a").click(deletefun);
});
//删除元素
//把原本的响应函数替换为自定义函数,不能带括号,否则是调用函数
$("a").click(deletefun);
});
</script>
<table id="employeeTable">
<tr>
<th>Name</th>
<th>Email</th>
<th>Salary</th>
<th> </th>
</tr>
<tr>
<td>Tom</td>
<td>tom@tom.com</td>
<td>5000</td>
<td><a href="deleteEmp?id=001">Delete</a></td>
</tr>
<tr>
<td>Jerry</td>
<td>jerry@sohu.com</td>
<td>8000</td>
<td><a href="deleteEmp?id=002">Delete</a></td>
</tr>
<tr>
<td>Bob</td>
<td>bob@tom.com</td>
<td>10000</td>
<td><a href="deleteEmp?id=003">Delete</a></td>
</tr>
</table>
<div id="formDiv">
<!-- <h4></h4>-->
<table>
<th>添加新员工</th>
<tr>
<td class="word">name: </td>
<td class="inp">
<input type="text" name="empName" id="empName" />
</td>
</tr>
<tr>
<td class="word">email: </td>
<td class="inp">
<input type="text" name="email" id="email" />
</td>
</tr>
<tr>
<td class="word">salary: </td>
<td class="inp">
<input type="text" name="salary" id="salary" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button id="addEmpButton" value="abc">
Submit
</button>
</td>
</tr>
</table>
JQuery样式操作
- addClass() 添加样式
- removeClass() 删除样式
- toggleClass() 有就删除,没有就添加样式
- 类似,点一下有,点一下没有,来回切换
- offset() 获取或设置元素坐标
jQuery动画
-
基本动画
-
show()
- 将隐藏的元素显示
-
hide()
- 将可见 的元素隐藏
-
toggle()-------类似切换功能
- 可见就隐藏,否则就显示
-
以上动画可以添加参数
- 第一个参数是时长,毫秒单位
- 第二个参数是动画的回调函数(动画完成后自动调用的函数)
$("#id").show(2000,function(){ alert("show动画已完成")})
-
-
淡出淡入动画
-
fadeln() 淡入 慢慢可见
- fadeOut() 淡出 慢慢消失
- fadeTo() 指定时长内慢慢的将透明度修改到指定的值
- 0 透明 1可见. 0.5 半透明----------第二个参数,
- 第三个参数是回调函数
- fadeToggle() 切换
- 以上动画可以添加参数
- 第一个参数是时长,毫秒单位
- 第二个参数是动画的回调函数(动画完成后自动调用的函数)
-
jQuery其他事件处理
- click() 绑定单击事件和触发单击事件
- click(function(){}) 里面传函数表示绑定事件,不传函数表示触发事件
- mouseover() 鼠标移入事件
- 同样可以绑定和触发事件
- mouseout() 鼠标移出事件
- 同样可以绑定和触发事件
- bind() 可以给元素一次性绑定一个或多个事件
- bind("click",function(){}) bind绑定的单击事件
- 多个事件空格隔开
- one() 可以给元素一次性绑定一个或多个事件
- 但是只会触发一次
- unbind() 和bind方法相反,解除绑定
- unbind("click") 要解除的事件名
- 都不写则解绑全部
- live() 也是 绑定事件,可以绑定后面动态创建的元素
jQuery事件对象
只需在绑定事件的function添加一个参数即可,一般用event
可以动态的查找是哪个事件
$("#id").bind("mouseover mouseout",function(event){
if(event.type == "mouseover"){
console.log("鼠标移入");
}
})