JQuery 基础
一、概念:一个javaScript框架,简化JS开发
* javaScript框架本质上就是一些js文件,封装了js的原生代码。
二、入门操作:
1.下载JQuery
*jquery-xxx.js与jquery-xxx.min.js的区别
1.jquery-xxx.js:开发版本。有良好的缩进和注释,体积大一些
2.jquery-xxx.min.js:生产版本。程序中使用,没有缩进,体积较小,程序加载快。
2.导入JQuery的js文件
3.使用
…
三、JQuery对象和JS对象区别与转换
1.JQuery对象在操作时,更加方便。
2.JQuery对象和js对象的方法是不通用的。
3.两者相互转换:
jq–>js:jq对象[索引] 或者 jq对象.get(索引)
js–>jq:$(js对象)
四、选择器:筛选具有相似特征的元素(标签)
1.基本操作:
事件绑定
//Jquery入口函数(dom文档加载完之后执行该函数中的代码)
$(function () {
$("#b1").click(function () {
alert("abc");
});
});
入口函数
$(function(){
})
样式控制
//修改css样式
$(function () {
//$("#div1").css("background-color","pink")
$("#div1").css("backgroundColor","pink")
});
2.分类
1.基本选择器(元素选择器)
1.标签选择器(元素选择器)
*语法:$("html标签名") 获得所有匹配标签名称的元素。
2.id选择器
*语法:$("#id的属性值") 获得与指定id属性值匹配的元素
3.类选择器
*语法:$(".class的属性值") 获得与指定的class属性值匹配的元素
4.并集选择器:
*语法:$("选择器1,选择器2....") 获取多个选择器选中的所有元素
2.层级选择器
1.后代选择器
*语法:$("A B") 选择A元素内部的所有B元素
2.子代选择器
*语法:$("A>B") 选择A元素内部的所有B子元素
3.属性选择器
1.属性名称选择器
*语法:$("A[属性名]") 包含指定属性的选择器
2.属性选择器
*语法:$("A[属性名='值']") 包含指定属性等于指定值的选择器
3.复合属性选择器
*语法:$("A[属性名='值'][属性名='值']...")包含多个属性条件的选择器
4.过滤选择器
1.首元素选择器
* 语法::first 获得选择的元素中第一个元素
2.尾元素选择器
* 语法::last 获得选择的元素中第一个元素
3.非元素选择器
* 语法::not(selector) 不包括指定内容的选择器
4.偶数选择器
* 语法::even 偶数,从0开始计数
5.奇数选择器
* 语法::odd 奇数,从0开始计数
6.等于索引选择器
* 语法::eq(index) 指定索引元素
7.大于索引选择器
* 语法::gt(index) 大于指定索引元素
8.小于索引选择器
* 语法::lt(index) 小于指定索引元素
9.标题选择器
* 语法::header 获得标题(h1、h2...)元素,固定写法
5.表单过滤选择器
1.可用元素选择器
* 语法::enable 获得可用元素
2.可不用元素选择器
* 语法::disable 获得不可用元素
3.选中选择器
* 语法::checked 获得单选/复选框选中的元素
4。选中选择器
* 语法::selected 获得下拉框选中的元素
五、DOM操作
1.内容操作
1.html():获取/设置元素标签体内容 <a><font>内容</font></a>--><font>内容</font>
2.text():获取/设置元素标签体纯文本内容 <a><font>内容</font></a>-->内容
3.val():获取/设置元素的value属性值
4.css():获取/设置元素的css样式
2.属性操作
1.通用属性操作
1.attr():获取/设置元素的属性
2.removeAttr():删除属性
3.prop():获取/设置元素的属性
4.removeProp():删除属性
*attr和prop的区别
1.如果操作的是元素的固有属性,建议使用prop。
2.如果操作的是元素自定义属性,建议使用attr。
2.对class属性操作
1.addClass():添加class属性值
2.removeClass():删除class属性值
3.toggleClass():切换class属性
*toggleClass("one"):判断如果元素对象上存在class="one",则将属性值删除,如果不存在则添加。
3.CRUD操作
1.append():父元素将子元素追加到末尾
* 对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾。
2.prepend():父元素将子元素追加到开头
* 对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头。
3.appendTo():
* 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾。
4.prependTo():
* 对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头。
5.after():添加元素到元素后边
* 对象1.after(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系。
6.before():
* 对象1.before(对象2):将对象2添加到对象1前边。对象1和对象2是兄弟关系。
7.insertAfter()
* 对象2.insertAfter(对象1):将对象2添加到对象1后边。对象1和对象2是兄弟关系。
8.insertBefore():
* 对象2.insertBefore(对象1):将对象2添加到对象1前边。对象1和对象2是兄弟关系。
9.remove():移除元素
*对象.remove():将对象删除掉。
10.empty():清空元素的所有后代元素
*对象.empty():将对象的后代元素全部清空,但是保留当前对象的
六、案例
1.隔行变色:
<script>
$(function () {
//需求:将数据行的奇数行背景色设置为 pink,偶数行背景色设置为 yellow
$("tr:gt(1):odd").css("backgroundColor","pink");
//获取数据行的偶数行,设置背景颜色为yellow
$("tr:gt(1):even").css("backgroundColor","yellow");
})
</script>
2.QQ表情的选择
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>QQ表情选择</title>
<script src="js/jquery-3.4.1.min.js"></script>
<style type="text/css">
*{margin: 0;padding: 0;list-style: none;}
.emoji{margin:50px;}
ul{overflow: hidden;}
li{float: left;width: 48px;height: 48px;cursor: pointer;}
.emoji img{ cursor: pointer; }
</style>
<script>
//需求:点击qq表情,将其追加到发言框中
$(function () {
//1.给img图片添加点击事件
$("ul img").click(function () {
//2.追加到p标签
$(".word").append($(this).clone()); //$(this).clone()复制当前对象并返回
})
})
</script>
</head>
<body>
<div class="emoji">
<ul>
<li><img src="img/01.gif" height="22" width="22" alt="" /></li>
<li><img src="img/02.gif" height="22" width="22" alt="" /></li>
<li><img src="img/03.gif" height="22" width="22" alt="" /></li>
<li><img src="img/04.gif" height="22" width="22" alt="" /></li>
<li><img src="img/05.gif" height="22" width="22" alt="" /></li>
<li><img src="img/06.gif" height="22" width="22" alt="" /></li>
<li><img src="img/07.gif" height="22" width="22" alt="" /></li>
<li><img src="img/08.gif" height="22" width="22" alt="" /></li>
<li><img src="img/09.gif" height="22" width="22" alt="" /></li>
<li><img src="img/10.gif" height="22" width="22" alt="" /></li>
<li><img src="img/11.gif" height="22" width="22" alt="" /></li>
<li><img src="img/12.gif" height="22" width="22" alt="" /></li>
</ul>
<p class="word">
<strong>请发言:</strong>
<img src="img/12.gif" height="22" width="22" alt="" />
</p>
</div>
</body>
</html>
3.下拉列表的左右移动
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/jquery-3.4.1.min.js"></script>
<style>
#leftName , #btn,#rightName{
float: left;
width: 100px;
height: 300px;
}
#toRight,#toLeft{
margin-top:100px ;
margin-left:30px;
width: 50px;
}
.border{
height: 500px;
padding: 100px;
}
</style>
<script>
//需求:实现下拉列表选中条目左右选择功能
$(function () {
//toRight
$("#toRight").click(function () {
//获取右边下拉列表对象.append(左边下拉列表选中的option)
$("#rightName").append($("#leftName>option:selected"));
});
//toLeft
$("#toLeft").click(function () {
//获取右边下拉列表选中的option.appendTo(左边下拉列表对象)
$("#rightName>option:selected").appendTo($("#leftName"));
});
});
</script>
</head>
<body>
<div class="border">
<select id="leftName" multiple="multiple">
<option>张三</option>
<option>李四</option>
<option>王五</option>
<option>赵六</option>
</select>
<div id="btn">
<input type="button" id="toRight" value="-->"><br>
<input type="button" id="toLeft" value="<--">
</div>
<select id="rightName" multiple="multiple">
<option>钱七</option>
</select>
</div>
</body>
</html>
JQuery高级
1.动画
1.默认显示和隐藏方式
1.show([speed,[easing],[fn]])
1.参数:
1.speed:动画的速度。三个预定义的值("slow","normal","fast")或者表示动画时长的毫秒值(如:1000)
2.easing:用于指定切换的效果,默认是"swing",可用参数"linear"
* swing:动画执行时效果是 先慢,中间快,最后又慢。
* linear:动画执行时速度是匀速的。
3.fn:动画完成时执行的函数,每个元素执行一次。
2.hide([speed,[easing],[fn]])
3.toggle([speed,[easing],[fn]])
2.滑动显示和隐藏方式
1.slideDown([speed,[easing],[fn]])
2.slideUp([speed,[easing],[fn]])
3.slideToggle([speed,[easing],[fn]])
3.淡入淡出显示和隐藏方式
1.fadeIn([speed,[easing],[fn]])
2.fadeOut([speed,[easing],[fn]])
3.fadeToggle([speed,[easing],[fn]])
2.遍历
1.js的遍历方式
* for(初始化值;循环结束条件;步长)
2.jq的遍历方式
1. jq对象.each(callback)
2. $.each(object,[callback])
3. for( of );
3.事件绑定
1.Jquery标准的绑定方式
jq对象.事件方法(回调函数)
* 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。
*表单对象.submit();//让表单提交
2.on绑定事件/off解除绑定
jq对象.on("事件名称",回调函数)
jq对象.off("事件名称")
3.事件切换:toggle
jq对象.toggle(fn1,fn2....)
*当点击jq对象对应的组件的后,会执行fn1,第二次点击会执行fn2...
*注意:1.9版本 .togglw方法删除,Jquery Migrate(迁移)插件可以恢复次功能。
4.案例
1.广告的显示与隐藏。
<script>
/*
需求:
1. 当页面加载完,3秒后。自动显示广告
2. 广告显示5秒后,自动消失。
分析:
1. 使用定时器来完成。setTimeout (执行一次定时器)
2. 分析发现JQuery的显示和隐藏动画效果其实就是控制display
3. 使用 show/hide方法来完成广告的显示
*/
//入口函数,在页面加载完成之后,定义定时器,调用这两个方法
$(function () {
//定义定时器,调用adShow方法 3秒后执行一次 1秒=1000毫秒(ms)
setTimeout(adshow,3000);
//定义定时器,调用adHide方法,8秒后执行一次
setTimeout(adhide,8000);
})
//显示广告
function adshow() {
$("#ad").show("slow");
}
//隐藏广告
function adhide() {
$("#ad").hide("slow");
}
</script>
2.抽奖
分析:
1. 给开始按钮绑定单击事件
1.1 定义循环定时器
1.2 切换小相框的src属性
* 定义数组,存放图片资源路径
* 生成随机数。数组索引
2. 给结束按钮绑定单击事件
1.1 停止定时器
1.2 给大相框设置src属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jquery案例之抽奖</title>
<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
<script language='javascript' type='text/javascript'>
var imgs=[
"../img/man00.jpg"
,"../img/man01.jpg"
,"../img/man02.jpg"
,"../img/man03.jpg"
,"../img/man04.jpg"
,"../img/man05.jpg"
,"../img/man06.jpg"
];
var startID;
var index;
$(function () {
//处理按钮是否可以使用的效果
// $("#startID").prop("disabled",false);
// $("#stopID").prop("disabled",true);
//1.给开始按钮绑定点击事件
$("#startID").click(function () {
//1.1定义循环定时器 20毫秒执行一次
startID=setInterval(function () {
//处理按钮是否可以使用的效果
$("#startID").prop("disabled",true);
$("#stopID").prop("disabled",false);
//1.2生成随机角标0-6
index=Math.floor(Math.random()*7);//0.000-0.999 -->*7--> 0.000-6.999
//1.3设置小相框的src属性
$("#img1ID").prop("src",imgs[index]);
},20);
});
//给结束按钮绑定点击事件
$("#stopID").click(function () {
//处理按钮是否可以使用的效果
$("#startID").prop("disabled",false);
$("#stopID").prop("disabled",true);
//1.1 停止定时器
clearInterval(startID);
//2.1 设置大相框的src属性
$("#img2ID").prop("src",imgs[index]).hide();
//显示动画
$("#img2ID").show(1000);//一秒后显示
});
})
</script>
</head>
<body>
<!-- 小像框 -->
<div style="border-style:dotted;width:160px;height:100px">
<img id="img1ID" src="../img/man00.jpg" style="width:160px;height:100px"/>
</div>
<!-- 大像框 -->
<div
style="border-style:double;width:800px;height:500px;position:absolute;left:500px;top:10px">
<img id="img2ID" src="../img/man00.jpg" width="800px" height="500px"/>
</div>
<!-- 开始按钮 -->
<input
id="startID"
type="button"
value="点击开始"
style="width:150px;height:150px;font-size:22px">
<!-- 停止按钮 -->
<input
id="stopID"
type="button"
value="点击停止"
style="width:150px;height:150px;font-size:22px">
</body>
</html>
5.插件:增强Jquery的功能
01-jQuery对象进行方法扩展.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01-jQuery对象进行方法扩展</title>
<script src="../../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//使用jquery插件 给jq对象添加2个方法 check()选中所有复选框,uncheck()取消选中所有复选框
//1.定义jqeury的对象插件
$.fn.extend({
//定义了一个check()方法。所有的jq对象都可以调用该方法
check:function () {
//让复选框选中
//this:调用该方法的jq对象
this.prop("checked",true);
},
uncheck:function () {
//让复选框不选中
this.prop("checked",false);
}
});
$(function () {
// 获取按钮
//$("#btn-check").check();
//复选框对象.check();
$("#btn-check").click(function () {
//获取复选框对象
$("input[type='checkbox']").check();
});
$("#btn-uncheck").click(function () {
//获取复选框对象
$("input[type='checkbox']").uncheck();
});
});
</script>
</head>
<body>
<input id="btn-check" type="button" value="点击选中复选框" onclick="checkFn()">
<input id="btn-uncheck" type="button" value="点击取消复选框选中" onclick="uncheckFn()">
<br/>
<input type="checkbox" value="football">足球
<input type="checkbox" value="basketball">篮球
<input type="checkbox" value="volleyball">排球
</body>
</html>
02-jQuery全局进行方法扩展
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02-jQuery全局进行方法扩展</title>
<script src="../../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//对全局方法扩展2个方法,扩展min方法:求2个值的最小值;扩展max方法:求2个值最大值
$.extend({
max:function (a,b) {
//返回两数中的较大值
return a >= b ? a:b;
},
min:function (a,b) {
//返回两数中的较小值
return a <= b ? a:b;
}
});
//调用全局方法
var max = $.max(4,3);
//alert(max);
var min = $.min(1,2);
alert(min);
</script>
</head>
<body>
</body>
</html>