jQuery
jQuery
1、jQuery是一个JavaScript框架(库),简化JavaScript程序。
2、jQuery有两个主流版本,一个1.x,大多数基于jQuery的框架使用的是1.x版本;另外就是官网最新版本3.x
3、下载地址(1.12.4):https://blog.jquery.com/2016/05/
4、引用js
- 页面中引用js
<script src="./js/jquery-1.12.4.min.js"></script>
- 利用CDN方式引入
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"> </script>
标签选择器
-
#id 选择器
-
.class 选择
-
标签名选择
-
$(“p:first”) 选择第一个标签
-
$(“a[target=‘_blank’]”) 选择指定属性值的标签
-
$(“tr:even”) 选择偶数tr
-
$(“tr:odd”) 选择奇数tr
$('.box').text('这个jquery修改的内容')
// debugger
$('.box').html('<p>p标签</p>')
$('.box').css('width', '100px')
$('.box').css('height', '100px')
$('.box').css('border', '1px solid red')
let obj = $('#btn1');
// jquery对象转原生js对象
obj.get(0).value='按钮'
// 原生js对象转jquery对象
$(document.getElementById('btn1')).val('重新设置按钮名字')
// 添加事件
$('#btn1').click(()=>{
alert()
})
$("span:first").css('color', 'blue')
$("a[target='_blank']").attr('href', 'http://www.baidu.com')
$("tr:even").css('color', 'red')
$("tr:odd").css('color', 'blue')
-
$(“li:last”) 获取最后一个标签
-
$(“li:eq(index)”) 根据下标获取标签
原生js和jQuery 相互转换
1、jQuery转换为原生js:$(“选择器”).get(下标)
2、原生js转换为jQuery:$(DOM对象)
事件
对象.事件名()
$('#btn1').click(() => {
alert()
})
页面加载完成(初始化)事件
$(document).ready(() => {
console.log("页面加载完成");
})
动画效果
隐藏显示
-
对象.hide() 隐藏标签
-
对象.show() 显示标签
-
对象.toggle() 隐藏显示相互切换
淡入淡出
- 对象.fadeOut() 淡出效果,参数为毫秒数
- 对象.fadeIn() 淡入效果
- 对象.fadeToggle() 淡入淡出相互切换
上滑(收起)下滑(展示)
-
对象.slidUp() 上滑(收起)
-
对象.slidDown() 下滑(展开)
-
对象.slidToggle() 上下滑切换
自定义动画
对象.onimate({ })
例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jq 动画效果</title>
<style type="text/css">
.box1{
width: 100px;
height: 100px;
background-color: red;
position: relative;
}
</style>
</head>
<body>
<input type="button" value="隐藏/显示" id="btn1">
<input type="button" value="淡入/淡出" id="btn2">
<input type="button" value="展开/收起" id="btn3">
<input type="button" value="动画" id="btn4">
<div class="box1">
</div>
<script src="./js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
let isShow = true //true 显示; false 隐藏
// 隐藏和显示div
$('#btn1').click(() => {
// if(isShow){
// $('.box1').hide() //隐藏标签(display:none)
// isShow = false
// }else{
// $('.box1').show() //显示标签
// isShow = true
// }
$('.box1').toggle() //显示和隐藏之间切换
})
// 淡入,淡出
$('#btn2').click(() => {
// $('.box1').fadeOut() //淡出,参数还可以设置时间(毫秒)
// $('.box1').fadeIn() //淡入
$('.box1').fadeToggle() //淡入、淡出切换
})
// 下滑,下滑
$('#btn3').click(() => {
// $('.box1').slideUp() //上滑收起
// $('.box1').slideDown() //下滑展开
$('.box1').slideToggle() //两种状态切换
})
// 自定义动画
$('#btn4').click(() => {
$('.box1').animate({
width:'200px',
height:'200px',
left:'500px',
top:'500px',
})
})
</script>
</body>
</html>
DOM
- text() 读取或设置文本(innerText)
- html() 读取或设置HTML(innerHTML)
- val() 读取或设置表单标签的value
- attr() 读取或设置标签的属性
- css() 读取或设置样式(style.xxx)
- addClass() 给标签添加class (className )
- removeClass() 删除标签的class
- toggleClass() 对class的添加,删除之间切换
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jq操作DOM内容和样式</title>
<style type="text/css">
.box1{
width: 100px;
height: 100px;
border: 1px solid red;
}
.active{
background-color: red;
border-radius: 10px;
}
</style>
</head>
<body>
<input type="text" id="txt1">
<input type="button" value="新增文本" id="btn1">
<input type="button" value="新增html" id="btn2">
<input type="button" value="修改div样式" id="btn4">
<input type="button" value="修改class" id="btn5">
<div class="box1 active">
</div>
<input type="button" value="修改图片的src" id="btn3">
<br>
<img src="./img/boy.jpg" id="img1">
<script src="./js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
// 修改text
$('#btn1').click(() => {
let txt = $('#txt1').val() //读input的值
$('.box1').text(txt) //写div的innerText
})
// 修改html
$('#btn2').click(() => {
$('.box1').html('<a href="http://www.baidu.com">baidu</a>')
})
// 修改属性
$('#btn3').click(() => {
// 第一个参数属性名, 第二个参数属性值
$('#img1').attr('src', './img/girl.jpg')
})
// 修改样式
$('#btn4').click(() => {
// 修改样式,第一个参数样式名,跟css样式名相同,不需要驼峰命名;
// 第二个参数样式的值
$('.box1').css('border-color', 'blue')
})
// 新增或删除class
$('#btn5').click(() => {
// $('.box1').addClass('active') //新增一个class
// $('.box1').removeClass('active') //删除一个class
$('.box1').toggleClass('active') //增加和删除两种状态之间切换
})
</script>
</body>
</html>
-
append() 在当前标签的子标签末尾添加标签
-
prepend() 在当前标签的子标签前面插入标签
-
after() 在当前标签后面添加标签
-
before() 在当前标签前面插入标签
-
remove() 删除当前标签(包括子标签)
-
empty() 删除当前标签的所有子标签
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery 增加删除标签</title>
<style type="text/css">
.box1{
width: 200px;
height: 200px;
border: 1px solid red;
}
</style>
</head>
<body>
<input type="button" value="append/prepend" id="btn1">
<input type="button" value="after/before" id="btn2">
<input type="button" value="remove" id="btn3">
<input type="button" value="empty" id="btn4">
<div class="box1">
<p>第一个</p>
<p>第二个</p>
<p>第三个</p>
</div>
<script src="./js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$('#btn1').click(() => {
$('.box1').append('<p>append</p>') //在子标签的末尾插入
$('.box1').prepend('<p>prepend</p>') //在子标签的前面插入
})
$('#btn2').click(() => {
// 选择.box1下面下标为1(第二个)的p标签
$('.box1 p:eq(1)').after('<span>after</span>') //在当前标签后面插入标签
$('.box1 p:eq(1)').before('<span>before</span>') //在当前标签前面插入标签
})
$('#btn3').click(() => {
$('.box1 p:last').remove() //删除当前标签
})
$('#btn4').click(() => {
$('.box1').empty() //删除所有子标签
})
</script>
</body>
</html>
练习:
读取表单内容,打印在控制台
给表单赋值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>读取表单内容,打印到控制台</title>
<style type="text/css">
form{
width: 500px;
height: 500px;
margin: auto;
}
</style>
</head>
<body>
<form action="" method="post">
姓名:<input type="text" name="username">
<br>
籍贯:<select name="userNativePlace">
<option value="">请选择</option>
<option value="云南">云南</option>
<option value="重庆">重庆</option>
<option value="四川">四川</option>
</select>
<br>
性别:<input type="radio" name="userSex" value="男">男
<input type="radio" name="userSex" value="女">女
<br>
爱好:<input type="checkbox" name="hobby" value="唱歌">唱歌
<input type="checkbox" name="hobby" value="跳舞">跳舞
<input type="checkbox" name="hobby" value="打球" checked>打球
<br>
<input type="button" value="提交" id="btn">
<!--
姓名:张三
籍贯:四川
性别:男
爱好:唱歌,打球
-->
<input type="button" value="赋值" id="btn2">
</form>
<script src="./js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
// 读取表单的值
$('#btn').click(() => {
console.log($('input[name="username"]').val());
console.log($('select[name="userNativePlace"]').val());
console.log($('input[name="userSex"]:checked').val())
// 复选框
let cbs = $('input[name="hobby"]:checked')
// each方法的第一个参数是序号,第二参数当前循环的对象(是原生的js对象)
cbs.each((index, current) => {
console.log($(current).val());
})
let hobby = $('input[name="hobby"]:checked').map((index, current) => {
return $(current).val()
}).get().join(",")
console.log(hobby);
// let arr = result.get()
// let str = arr.join(",")
})
// 表单赋值
$('#btn2').click(() => {
$('input[name="username"]').val('张三')
$('select[name="userNativePlace"]').val('四川')
$('input[value="男"]').prop('checked','checked')
// $('input[name="userSex"]').each((index, current) => {
// if('男' == $(current).val()){
// $(current).prop('checked','checked')
// }
// })
$('input[name="hobby"]').each((index, current) => {
$(current).removeProp('checked')
if($(current).val() == '唱歌' || $(current).val() == '打球'){
$(current).prop('checked', 'checked')
}
})
})
</script>
</body>
</html>
遍历
-
parent() 父标签
-
children() 所有子标签,参数还可以设置选择器
-
next() 下一个兄弟
-
prev() 前一个兄弟
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>标签遍历</title>
<style type="text/css">
#outbox {
width: 400px;
height: 400px;
border:1px solid red;
margin:auto;
}
#midbox{
width: 300px;
height: 300px;
border:1px solid blue;
margin:auto;
margin-top:50px;
}
#bottombox{
width: 200px;
height: 200px;
border:1px solid green;
margin:auto;
margin-top:50px;
text-align:center
}
</style>
</head>
<body>
<div id="outbox">
<div id="midbox">
<div id="bottombox">
<p>第一个p标签</p>
<p id="midp">第二个p标签</p>
<p>第三个p标签</p>
</div>
<div id="tottombox2">
</div>
</div>
</div>
<script src="./js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
console.log($('#midbox').parent()); //返回父标签
console.log($('#midbox').children()); //返回所有子标签
console.log($('#midbox').children('#bottombox')); //children()参数可以用选择器
console.log($('#midbox').children().eq(0)); //用eq加序号进一步选择
console.log($('#midbox').children().first()); //第一个子标签
console.log($('#midbox').children().last()); //最后一个子标签
console.log($('#midp').next()); //下一个兄弟
console.log($('#midp').prev()); //前一个兄弟
</script>
</body>
</html>
Ajax介绍
Ajax概述
1、Ajax: 全称Asynchronous JavaScript And XML,异步的JavaScript和XML。其作用有如下2点:
- 与服务器进行数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。
- 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等。
Ajax作用
我们详细的解释一下Ajax技术的2个作用
-
与服务器进行数据交互
如下图所示前端资源被浏览器解析,但是前端页面上缺少数据,前端可以通过Ajax技术,向后台服务器发起请求,后台服务器接受到前端的请求,从数据库中获取前端需要的资源,然后响应给前端,前端在通过我们学习的vue技术,可以将数据展示到页面上,这样用户就能看到完整的页面了。此处可以对比JavaSE中的网络编程技术来理解。
-
异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。
如下图所示,当我们再百度搜索java时,下面的联想数据是通过Ajax请求从后台服务器得到的,在整个过程中,我们的Ajax请求不会导致整个百度页面的重新加载,并且只针对搜索栏这局部模块的数据进行了数据的更新,不会对整个页面的其他地方进行数据的更新,这样就大大提升了页面的加载速度,用户体验高。
同步异步
针对于上述Ajax的局部刷新功能是因为Ajax请求是异步的,与之对应的有同步请求。接下来我们介绍一下异步请求和同步请求的区别。
- 同步请求发送过程如下图所示:
浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后才能,浏览器页面才能继续做其他的操作。
- 异步请求发送过程如下图所示:
浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。
jQuery的AJAX请求
get()
第一个参数是请求的url;
第二个参数是请求成功的回调函数,后台返回的数据在形参result里
$.get('test.json', (result) => {
})
post()
第一个参数是请求的url
第二个参数是提交的数据
第三个参数是回调函数
$.post('test.json',
{ name:'张三' },
(ret) => {
debugger
})
ajax()
ajax()是一个综合方法,它可以实现上面的get或post请求
$.ajax({
url:'test.json', type:'get',
//get或post, 不区分大小
dataType:'JSON' ,
//后台返回的数据格式,不区分大小写
data:{
//提交的数据,如果没有数据提交,data参数可以省略
name:'张三'
},
success: (ret) => {
//后台执行成功的回调函数, complete回调无论成功或失败都会执行
debugger
}
})