jQuery
jQuery操作HTML元素
增加元素
-
append(在内部进行尾插)
javascriptlet newImg = $("<img src='///'>"); $("img").append(newImg);
-
appendTo
javascriptlet newImg = $("<img src='///'>"); newImg.appendTo($("img")); //下列方法使用方式相同
-
perpend(在内部进行头插)
-
perpendTo
-
after(选中元素的平级进行尾插)
-
insertAfter
-
befor(选中元素的平级进行头插)
-
insertBefore
删除元素
-
remove(将选中的元素及其子元素全部删除)
-
empty(将选中的元素及其子元素全部清空)
修改元素
-
修改文本
-
text(有参代表修改文本内容,无参代表获取元素文本内容)
-
html(有参修改内部内容,包括带有html标签的内容,无参代表获取元素html内容)
-
val(有参代表向input输入框添加内容,无参代表获取input输入内容)
html<input name="username" id="username"/> <script> $(function(){ let username = $("#username").val();//只针对value属性,一般来说,只有input标签有value属性 }) </script>
-
-
修改属性
attr(一个参数代表取值,两个参数代表修改属性值)
-
增加属性
addClass(向选中的元素添加class属性)
-
删除属性
-
removeClass(删除选中元素的calss属性)
在增加calss和删除class之间切换:
toggleClass()
-
-
修改样式
css(一个参数代表取值,两个参数代表修改属性值)
查找元素
-
基本筛选:
first()
,last()
,eq(index)
- 选择第一个
$("div:first")
/$("div").fisrt()
- 选择最后一个
$("div:last")
/$("div").last()
- 选择指定下标
$("div:eq(1)")
/$("div").eq(1)
- 选择大于指定下标
$("div:gt(1)")
- 选择小于指定下标
$("div:lt(1)")
- 选择下标为奇数
$("div:even")
- 选择下标为偶数
$("div:odd")
- 选择第一个
-
子代选择
-
属于其父元素的第一个子元素的所有 元素
$("p:first-child")
-
属于其父元素的第一个 元素的所有
元素
$("p:first-of-type")
-
属于其父元素的最后一个子元素的所有 元素
$("p:last-child")
-
属于其父元素的最后一个 元素的所有
元素
$("p:last-of-type")
-
属于其父元素的第二个子元素的所有 元素
$("p:nth-child(2)")
-
属于其父元素的第二个子元素的所有 元素,从最后一个子元素开始计数
$("p:nth-last-child(2)")
-
属于其父元素的第二个 元素的所有
元素
$("p:nth-of-type(2)")
-
属于其父元素的第二个 元素的所有
元素,从最后一个子元素开始计数
$("p:nth-last-of-type(2)")
-
属于其父元素的唯一子元素的所有 元素
$("p:only-child")
-
属于其父元素的特定类型的唯一子元素的所有 元素
$("p:only-of-type")
加
type
和不加type
的区别:- 加上
type
:指定了父元素中只能是某个类型的标签,比如$("p:first-of-type")
,指定了是父元素中的p
标签 - 不加
type
:直接从父元素中的子元素开始,不管什么类型
-
-
内容选择:
- 包含指定内容
$("div:contains('John')")
- 不包含指定内容
$("div:empty('John')")
- 选择隐藏的元素
$("div:hidden")
- 包含指定内容
-
属性选择
- 选择带有href属性的元素
$("[href]")
- 选择带有href属性并且值等于a.html的元素
$("[href='a.html']")
- 选择带有href属性并且值不等于a.html的元素
$("[href!='a.html']")
- 选择带有href属性并且值以abc结尾的元素
$("[href$='abc']")
- 选择带有href属性并且值以abc开头的元素
$("[href^='abc']")
- 选择带有href属性并且值等于或包含abc结尾的元素
$("[href|='abc']")
- 选择带有href属性并且值包含***++单词++ ***abc的元素
$("[href~='abc']")
- 选择带有href属性并且值包含++字符串++ abc的元素
$("[href~='abc']")
- 选择带有href属性的元素
-
表单组件选择(都是在form中才能这样写)
- 所有input标签
$(":input")
- 所有带有 type="text" 的 input 元素
$(":text")
- 所有带有 type="password" 的 input 元素
$(":password")
- 所有带有 type="radio" 的 input 元素
$(":radio")
- 所有带有 type="checkbox" 的 input 元素
$(":checkbox")
- 所有带有 type="submit" 的 input 元素
$(":submit")
- 所有带有 type="reset" 的 input 元素
$(":reset")
- 所有带有 type="button" 的 input 元素
$(":button")
- 所有带有 type="image" 的 input 元素
$(":image")
- 所有带有 type="file" 的 input 元素
$(":file")
- 获取所有++启用++ 的元素
$(":enbale")
- 获取所有++禁用++ 的元素
$(":enbale")
- 所有选定的下拉列表元素
$(":select")
- 所有选中的单/复选框选项素
$(":checked")
- 所有input标签
-
遍历:
-
查找父级标签
-
parent() 返回被选元素的直接父元素
-
parents() 返回被选元素的所有父元素,直到根节点<html>
-
parentsUntil(param) 返回被选元素与param元素之间的父元素
-
-
查找同级标签
-
siblings(param) 如果有参数,查找标签为param的同胞元素;如果没有参数,查找所有的同胞元素
-
next() 返回被选元素的直接下一个同胞元素,prev() 与之相反
-
nextAll() 返回被选元素后的所有同胞元素,prevAll() 与之相反
-
nextUntil(param) 返回被选元素到param元素之间的所有同胞元素,prevUntil(param)与之相反
-
-
查找子孙标签
-
children(selector) 返回被选标签的所有(满足selector条件的)直接子元素
-
find(param) 返回标签为param的所有子元素
-
-
jQuery效果
隐藏与显示
-
show(speed, callback) 显示
-
hide(speed, callback) 隐藏
-
toggle(speed, callback) 在隐藏于显示之间切换
淡入淡出
-
fadeIn(speed, callback) 淡入效果
-
fadeOut(speed, callback) 淡出效果
-
fadeToggle(speed, callback) 在淡入淡出效果之间切换
-
fadeTo(speed, callback) 将选中的元素设置为介于0~1之间的透明度
滑动
-
slideDown(speed,callback) 向下滑动
-
slideUp(speed, callback) 向上滑动
-
slideToggle(speed, callback) 向上滑动与向下滑动切换
动画
animate
的param
参数可以有多个属性,包括width
、height
、opacity
等
animate({params},speed,callback)
回调函数callback
Callback 回调函数在当前动画 100% 完成之后执行
可以是显示的
function(params){}
,也可以是箭头函数(params)=>{}
jQuery事件
冒泡事件
事件向上传递
阻止冒泡事件:
javascript//假设在一个p标签中嵌套了一个span标签 $(function(){ $("p").click(()=>{ alert("p标签被点击了"); }) $("span").click((event)=>{ event.stopPropagation(); alert("span标签被点击了");//p标签的点击事件不会触发 }); })
鼠标事件
-
click 点击事件
-
dblclick 双击事件
-
mousrenter 鼠标进入
-
mouseleave 鼠标离开
-
mousedown 鼠标点击(鼠标上任意键点击)
-
mouseup 鼠标放开(鼠标上任意键点击后放开)
-
hover 覆盖(事mouseenter和mouseleave事件的组合)
javascript//hover覆盖 $("#man").hover( function(){ console.log("鼠标移入"); }, function(){ console.log("鼠标移出"); } )
-
toggle切换
javascript// 在版本 1.9 中被移除。 添加 click 事件之间要切换的两个或多个函数
焦点事件
-
foucs 获取焦点事件(当输入光标闪烁)
-
blur 失去焦点事件(当输入完成,输入光标消失:可以用作表单提交前的信息验证)
多事件绑定
-
on 可以将单个事件或者多个事件绑定到元素(bind方法在3.0移除)
javascript//为p标签绑定点击事件(单个事件) $("p").on("click", function(){ $(this).hide(); }); //为p标签绑定多个事件 $("p").on({ mouseenter: function(){ $(this).css("background-color", "lightgray"); }, mouseleave: function(){ $(this).css("background-color", "lightblue"); }, click: function(){ $(this).css("background-color", "yellow"); } });
-
多个事件功能一致
javascript// $("p").on("click mouseenter mouseleave", function(){ console.log("不同事件,小相同的功能"); });
触发绑定的事件
-
trigger 自动触发绑定到被选元素的所有事件
javascript//表单中有账号名、密码和确认密码 //验证账号和密码 $("#username").blur(()=>{ let username = $(this).val(); if(username.trim() === null ){ alert("账号不能为空"); submit=false; } }) $("#password").blur(()=>{ let password = $(this).val(); if(password.trim() === null ){ alert("密码不能为空"); submit=false; } }) $("#repassword").blur(()=>{ let password = $(this).val(); let repassword = $("#repassword").val(); if(password.trim() === null ){ alert("确认密码不能为空"); submit=false; }else if(password.trim()!=repassword.trim()){ alert("两次密码不一致"); submit=false; } }) //在表单提交前自动验证表单数据 //全局flag是否可以注册 boolen submit=true; $("#form").submit(()=>{ submit = true; $("#username").trigger("blur"); $("#password").trigger("blur"); $("#repassword").trigger("blur"); return bool; })
jQuery与AJAX
get与post
请求:
get方法只有两个参数(url, callback),post方法有三个参数(url, data, callback)
get和post方法接收到服务器的数据都在回调函数callback中,callback有两个参数(data, status),一个是来自服务器的字符串,另一个是状态
方法:
-
引入jquery.js
-
选择get请求或者post请求
-
编写请求和响应后的逻辑
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="common-js/jquery1.10.js"></script>
</head>
<body>
<p id="name"></p>
<p id="age"></p>
</body>
<script>
$(function (){
$.get("AJax?username=周珍珍&age=12&sex=女", (response, state)=>{
let student = JSON.parse(response);
$("p#name").text(student.name);
$("p#age").text(student.age);
})
})
</script>
</html>