jQuery概述
什么是jQuery
jQuery是一款优秀的javascript的轻量级框架之一,封装了dom操作、事件绑定、Ajax等功能。
特别值得一提的是基于jQuery平台的插件非常丰富,大多数前端业务场景都有其封装好的工具可直接使用。
jQuery下载和版本介绍
官网地址:http://jquery.com
==注意事项==
如果公司使用的老版本插件,我们jq升级后,可能会让插件失效....
jQuery版本
在讲解过程中我们使用 3.2.1版本
框架(Framework)是完成某种功能的半成品,抽取重复繁琐的代码,提供简洁强大的方法实现。
jquery入门
<!-- 当前页面如果想使用jq,需要引入jq的库,通script标签中的src属性进行即可 -->
<script src="js/jquery-3.4.1.js"></script>
<script>
//我们的jq代码还是在script标签中书写,前提得有jq的库
//js原生版
window.onload = function(){
alert(666);
}
//jq版
jQuery(function(){
alert(888);
})
//jq简化写法1
$(document).ready(function(){
alert(999);
})
//jq简化写法2 推荐
$(function(){
//今后的jq代码都在这里书写
});
</script>
jq与js的页面加载的区别
语法
两者之间的区别
* js: 只能定义一次,如果定义多次,后面会将前面的进行给覆盖掉
* jq: 可以定义多次
代码演示
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title></title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
?
? ? ? ?<script>
? ? ? ? ? ?// js页面加载
? ? ? ? ? /* window.onload = function () {
? ? ? ? ? ? ? alert("js页面加载事件1");
?
? ? ? ? ? };
?
? ? ? ? ? window.onload = function () {
? ? ? ? ? ? ? alert("js页面加载事件2");
?
? ? ? ? ? };*/
?
? ? ? ? ? ?// jq页面加载
? ? ? ? ? ?$(function(){
? ? ? ? ? ? ? ?alert("jq页面加载事件1");
? ? ? ? ? });
?
? ? ? ? ? ?$(function(){
? ? ? ? ? ? ? ?alert("jq页面加载事件2");
? ? ? ? ? });
?
? ? ? ?</script>
?
? ?</body>
</html>
操作内容
?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
? ?<script src="../js/jquery-3.2.1.js"></script>
? ?<script>
? ? ? $(function(){
?
? ? ? ? ? ?//js原生写法
? ? ? ? ? ?//var id = document.getElementById("mydiv").innerHTML;获取内容
? ? ? ? ? ?var id = document.getElementById("mydiv").innerHTML='你是我的小饼干';
? ? ? ? ? ?alert(id);
?
? ? ? ? ? ?//jq通过#来拿到id
? ? ? ? ? alert($("#mydiv").html());//获取内容
? ? ? ? ? $("#mydiv").html("小甜心");//改变内容
?
? ? ? });
? ?</script>
</head>
<body>
? ?<div id="mydiv">我爱你中国</div>
</body>
?
</html>
jq与js的转换
jQuery虽然本质上也是js,但如果使用jQuery的属性和方法那么必须保证对象是jQuery对象而不是js对象。
通过js方式获取的是js对象,通过jQuery方式获取的是jQuery对象。
-
js 转 jq
$(js对象)
-
jq 转 js
jq对象[索引]
jq对象.get(索引)
代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-3.4.1.js"></script>
<script>
$(function(){
//js写法
document.getElementById("mydiv").innerHTML="我是dom对象的修改";
//jq写法
$("#mydiv").html("我是jq对象的修改");
//js ---> jq
$(document.getElementById("mydiv")).html("js 转 jq");
//jq ---> js
//方式一
$("div")[0].innerHTML = "jq转成js方式一";
//方式二
$("div").get(1).innerHTML = "jq转成js方式二"
});
</script>
</head>
<body>
<div id="mydiv">1111</div>
<div id="mydiv">2222</div>
</body>
</html>
事件绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
? ?<script src="../js/jquery-3.2.1.js"></script>
? ?<script>
? ? ? $(function(){
//获取button标签
? ? ? ? ? $("button").click(function(){
? ? ? ? ? ? ? $("p").hide();//p会被隐藏标签
? ? ? ? ? ? ? $("p").hide("slow");//用600毫秒的时间将段落缓慢的隐藏
? ? ? ? ? });
? ? ? });
? ?</script>
</head>
<body>
? ?<P>我爱你,我爱你江一燕</P>
? ?<button type="button">点我啊</button>
</body>
</html>
解绑事件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<button id="btn" type="button">使用on绑定事件</button>
? ?<button id="btn2" type="button">使用off解绑事件</button>
? ?
? ?<script src="../js/jquery-3.2.1.js"></script>
? ?<script>
? ? ? ?$(function () {
? ? ? ? ? ?//使用on绑定事件
? ? ? ? ? ?$("#btn").on("click",function () {
? ? ? ? ? ? ? ?alert("我被点击了。。")
? ? ? ? ? })
? ? ? ? ? ?//使用off解绑事件
? ? ? ? ? ?$("#btn2").click(function () {
? ? ? ? ? ? ? ?$("#btn").off("click");//解绑指定单击事件
? ? ? ? ? ? ? ?$("#btn").off();//解绑所有事件
? ? ? ? ? });
? ? ? });
? ?</script>
?
</body>
</html>
Jq循环
? ?<script src="../js/jquery-3.2.1.js"></script>
? ?<script>
? ? ? ?$(function () {
? var arr =['a','b','c','d'];
? $(arr).each(function(){
? alert(this);//代表是当前引用对象, 用的是谁,this代表谁
? });
? ? ? });
? ?</script>
Jq操作css样式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
? ?
? ?<ul>
? ? ? ?<li>aaaaaaa</li>
? ? ? ?<li>bbbbbbb</li>
? ? ? ?<li>ccccccc</li>
? ?</ul>
?
? ?<script src="../js/jquery-3.2.1.js"></script>
? ?<script>
? ? ? ?$(function () {
? ? ? ? ? $("li").mouseover(function () {
? ? ? ? ? ? ? $(this).css("background","orange");
? ? ? ? ? }).mouseout(function () {
? ? ? ? ? ? ? $(this).css("background","white");
? ? ? ? ? });
?
? ? ? });
?
? ?</script>
?
</body>
</html>
jQuery选择器
基本选择器
-
标签选择器(元素选择器)
语法: $("html标签名") 获得所有匹配标签名称的元素
-
id选择器
语法: $("#id的属性值") 获得与指定id属性值匹配的元素
-
类选择器
语法: $(".class的属性值") 获得与指定的class属性值匹配的元素
-
并集选择器
语法: $("选择器1,选择器2....") 获取多个选择器选中的所有元素
<span class="female">古力娜扎</span>
<span class="female" id="dlrb">迪丽热巴</span>
<span class="female hero">黑人</span>
?
<span class="male hero">钢铁侠</span>
<span class="male hero">超人</span>
<script src="js/jquery-3.4.1.js"></script>
<script>
//标签名选择器
var b = $("span");
$(b).each(function(){
console.info(this)
})
//类选择器
var a = $(".female");
$(a).each(function(){
console.info(this)
})
console.info( $(".female").text() );
//id选择器
console.info( $("#dlrb").text() )
//组合选择器
console.info( $("#dlrb , .male ").text() )
</script>
层级选择器
过滤器
属性过滤选择器
-
首元素选择器
语法: :first 获得选择的元素中的第一个元素
-
尾元素选择器
语法: :last 获得选择的元素中的最后一个元素
-
偶数选择器
语法: :even 偶数,从 0 开始计数
-
奇数选择器
语法: :odd 奇数,从 0 开始计数
-
等于索引选择器
语法: :eq(index) 指定索引元素
<h1>表格信息</h1>
<h2>这是一张商品表</h2>
<table border="1" width="600">
? ?<tr>
? ? ? ?<th>商品编号</th>
? ? ? ?<th>商品名称</th>
? ? ? ?<th>售价</th>
? ? ? ?<th>数量</th>
? ?</tr>
? ?<tr>
? ? ? ?<td>001</td>
? ? ? ?<td>冰箱</td>
? ? ? ?<td>3000</td>
? ? ? ?<td>100</td>
? ?</tr>
? ?<tr>
? ? ? ?<td>002</td>
? ? ? ?<td>洗衣机</td>
? ? ? ?<td>2000</td>
? ? ? ?<td>50</td>
? ?</tr>
? ?<tr>
? ? ? ?<td>003</td>
? ? ? ?<td>热水器</td>
? ? ? ?<td>1500</td>
? ? ? ?<td>20</td>
? ?</tr>
? ?<tr>
? ? ? ?<td>004</td>
? ? ? ?<td>手机</td>
? ? ? ?<td>2188</td>
? ? ? ?<td>200</td>
? ?</tr>
</table>
<div>slideDown(speed, [callback]) 概述
? 通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数。
? 这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式显示出来。在jQuery
? 1.3中,上下的padding和margin也会有动画,效果更流畅。 参数
? speedString,Number三种预定速度之一的字符串("slow", "normal", or
? "fast")或表示动画时长的毫秒数值(如:1000) callback (可选)FunctionFunction在动画完成时执行的函数</div>
<div>fadeOut(speed, [callback]) 概述
? 通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。
? 这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。 参数
? speedString,Number三种预定速度之一的字符串("slow", "normal", or
? "fast")或表示动画时长的毫秒数值(如:1000) callback (可选)Function在动画完成时执行的函数</div> <script src="js/jquery-3.4.1.js"></script>
<script>
$(function(){
// 1.设置表格第一行,显示为红色
$("tr:first").css("background","red");
// 2.设置表格除第一行以外 显示为蓝色
$("tr:gt(0)").css("background","blue");
// 3.设置表格偶数行背景色 金色
$("tr:even").css("background","yellow");
// 4.设置表格奇数行背景色 绿色
$("tr:odd").css("background","green");
// 5.设置页面中所有标题 显示为灰色
$(":header").css("background","gray");
// 6.设置页面中正在执行动画效果div背景黄色
$("div").click(function () {
$(this).slideUp("slow");
$("div:animated").css("background","green");
});
? ? ? ? ? ? ? ?// 7. 设置<html>背景颜色为金色
? ? ? ? ? $(":root").css("background-color","yellow");
});
</script>
内容过滤选择器
<div>今天是个晴天</div>
<div>明天要去人民公园a</div>
<div>
? ?<span>JavaScript</span> 是网页开发中脚本技术
</div>
<div>Ajax 是异步的 JavaScript和 XML</div>
<div>
? ?<p>jQuery</p>
? ?是 JavaScript一个 轻量级框架
</div>
<div></div>
<script src="js/jquery-3.4.1.js"></script>
<script>
? ? $(function(){
? ? ? ? // 1.设置含有文本内容 ”公园” 的 div 的字体颜色为红色
? ? ? ? $("div:contains('公园')").css("color","red");
? ? ? ?
? ? ? ? // 2.设置没有子元素的div元素 文本内容 ”这是一个空DIV“
? ? ? ? $("div:empty").html("这是一个空的div").css("color","red");//空div找出来,写入
? ? ? ?
? ? ? ? // 3.设置包含p元素 的 div 背景色为黄色
? ? ? ? $("div:has(p)").css("background","yellow");//div中包含p
? ? ? ?
? ? ? ? // 4.设置所有含有子元素的span字体为蓝色
? ? ? ? $("span:parent").css("color","blue");//span是子元素
? ? });
</script>
可见性过滤选择器
<form>
<input type="hidden" />
<input type="text" name="xxx" style="display: none;" />
</form>
<table>
<tr>
<td>洗衣机</td>
</tr>
<tr>
<td>热水器</td>
</tr>
<tr style="display: none">
<td>电冰箱</td>
</tr>
</table>
<script src="js/jquery-3.4.1.js"></script>
<script>
$(function(){
//1、选中from中不可见元素,添加class属性
//匹配所有display:none 或者 input中的 type:hidden 元素
$("form :hidden").attr("class","yanqi");
$("tr :hidden").attr("class","yanqi");
$("input:hidden").addClass("yanqi");//只能添加class属性
//2.设置table所有 可见 tr 背景色 金色
$("table tr:visible").css("background","yellow");
//3.设置table所有 隐藏tr 字体颜色为红色,显示出来
$("table tr:hidden").css("color","red").show();
});
</script>
属性选择器
-
属性名称选择器
语法: $("A[属性名]") 包含指定属性的选择器
-
属性选择器
语法: $("A[属性名='值']") 包含指定属性等于指定值的选择器
-
复合属性选择器
语法: $("A[属性名='值'] []...") 包含多个属性条件的选择器
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>06-属性选择器</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
?
? ? ? ?<input type="text" name="username" value="用户名"/><br/>
?
? ? ? ?<input type="text" name="nickname" value="昵称"/><br/>
?
? ? ? ?<input type="password" name="password" value="密码"/><br/>
? ? ? ?
? ? ? ?<p class="p-yanqi">我是class="p-yanqi"</p>
?
? ? ? ?<script>
? ? ? ? ? // 1.获取type 的input标签
$("input[type]").attr("id","118");
// 2.获取type=“password”的input标签
$("input[type='password']").attr("autocomplete","off");
// 3.获取属性名以xx开始
$("p[class^='p']").css("color","green");
// 4.获取属性名以xx结尾
$("p[class$='2']").css("color","red");
// 5.属性值中包含的属性
$("input[type*='wo']").attr("abc","99");
// 6.获取 type ='text' 并且 name='nickname' 的标签
$("input[type='text'][name='nickname']").attr("value","一燕");
?
? ? ? ?</script>
? ?</body>
</html>
子元素过滤选择器
<table border="1" width="400" id="mytable">
? ?<tr><td>1</td><td>冰箱</td></tr>
? ?<tr><td>2</td><td>洗衣机</td></tr>
? ?<tr><td>3</td><td>热水器</td></tr>
? ?<tr><td>4</td><td>电饭锅</td></tr>
? ?<tr><td>5</td><td>电磁炉</td></tr>
? ?<tr><td>6</td><td>豆浆机</td></tr>
? ?<tr><td>7</td><td>微波炉</td></tr>
? ?<tr><td>8</td><td>电视</td></tr>
? ?<tr><td>9</td><td>空调</td></tr>
? ?<tr><td>10</td><td>收音机</td></tr>
? ?<tr><td>11</td><td>排油烟机</td></tr>
? ?<tr><td>12</td><td>加湿器</td></tr>
? ?<tr><td>13 电暖气</td></tr>
</table>
?
<script src="js/jquery-3.4.1.js"></script>
? <script>
? $(function () {
? // 1.在每个表格 下3的倍数行,字体颜色为红色 3 6 9 12
? $("tr:nth-child(3n)").css("color","red");
?
// 2.每个表格 奇数行 背景色 黄色
? $("tr:nth-child(odd)").css("background","yellow");
?
// 3.每个表格 偶数行 背景色 灰色
? $("tr:nth-child(even)").css("background","gray");
?
// 4.每个tr 只有一个td的 字体为 蓝色
? $("td:only-child").css("color","blue");
? });
</script>
表单过滤选择器
<form action="#">
? ?用户名 <input type="text" name="username" /><span id="span"></span> <br/>
? ?密 ?码 <input type="password" name="password" /> <br/>
? ?<input type="button" value="提交" />
</form>
<script src="js/jquery-3.4.1.js"></script>
<script>
? // 1.对所有text框和password框,添加离焦事件,校验输入内容不能为空
$(":text, :password").blur(function () {
var value = $(this).val();//获取输入框的值
if(value == ""){
$("#span").html("不能为空!");
}else{
?$("#span").html("");
? }
});
? // 2.对button 添加 点击事件,提交form表单
$(":button").click(function () {
$("form").submit();
});
?
</script>
表单对象属性过滤选择器
-
可用元素选择器
语法: :enabled 获得可用元素
-
不可用元素选择器
语法: :disabled 获得不可用元素
-
选中选择器
语法: :checked 获得单选/复选框选中的元素
-
选中选择器
语法: :selected 获得下拉框选中的元素
<form>
? ?<input type="text" value="不可用值1" disabled="disabled">
? ?<input type="text" value="可用值1">
? 性别
? ?<input type="radio" value="男" name="gender" checked="checked"/>男
? ?<input type="radio" value="女" name="gender"/>女 <br/>
? 爱好
? ?<input type="checkbox" value="体育" name="hobby"/> 体育
? ?<input type="checkbox" value="读书" name="hobby" checked="checked"/> 读书
? ?<input type="checkbox" value="音乐" name="hobby"/> 音乐
? ?<input type="checkbox" value="绘画" name="hobby"/> 绘画 <br/>
? 城市
? ?<select name="city" id="edu">
? ? ? ?<option value="">请选择</option>
? ? ? ?<option value="北京">北京</option>
? ? ? ?<option value="上海" selected="selected">上海</option>
? ? ? ?<option value="天津">天津</option>
? ?</select> <br/>
? ?<input type="button" value="打印"/>
</form>
<script src="js/jquery-3.4.1.js"></script>
<script>
?
? ?// 1. 获取可用的输入框
? ?$("input[type='text']:enabled").attr("id","77");
?
? ?// 2. 获取不可用的输入框
? ?$("input[type='text']:disabled").attr("id","88");
?
? ?// 3. 获取选中的复选框
? ?$("input[type='checkbox']:checked").val();
?
? ?// 4. 获取选中的下列选择框
? ?$("#edu option:selected").val();
?
?
? ?// 点击button 打印radio checkbox select 中选中项的值
? ?$(":button").click(function () {
? ? ? ?//单选
? ? ? ?alert( $("input[name='gender']:checked").val() );
? ? ? ?//多选
? ? ? ?$("input[name='hobby']:checked").each(function () {
? ? ? ? ? ?alert($(this).val());
? ? ? });
? ? ? ?//下拉
? ? ? ?alert($("select option:selected").val());
? })
</script>
对象遍历
语法
jq对象.each(function(index,element){
?
})
代码实现
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>08-对象遍历</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
? ? ? ?<!--
? ? ? ?jquery对象的遍历
? ? ? ? ? ?$.each() 用法示例
? ? ? ?-->
? ? ? ?<ul id="city">
? ? ? ? ? ?<li>北京</li>
? ? ? ? ? ?<li>上海</li>
? ? ? ? ? ?<li>天津</li>
? ? ? ?</ul>
?
? ? ? ?<script>
?
? ? ? ? ? ?/*
? ? ? ? ? ? ? 内置的两个参数:
? ? ? ? ? ? ? index: 索引
? ? ? ? ? ? ? element:遍历到的元素
? ? ? ? ? ? */
$("li").each(function(index,element){
//遍历索引
console.info(index);
//遍历元素
console.info(element);
//遍历元素中的数据
console.info( $(element).html() );
console.info( $(this).html() );
})
? ? ? ?</script>
? ?</body>
</html>
jQuery操作DOM
操作内容
相关方法
方法 | 描述 |
---|
text() | 获取/设置元素的标签体纯文本内容 | html() | 获取/设置元素的标签体超文本内容 |
代码演示
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>09-dom操作内容</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
? ? ? ?<div id="myDiv"><p>天王盖地虎</p></div>
?
? ? ? ?<script>
//1、获取标签中内容,innerHTML 从开始标签 -- 结束中间所有内容
console.info( $("#myDiv").html() );
//2、设置标签中内容,直接把之前的所有内容替换掉
$("#myDiv").html("<h1>宝塔镇河妖</h1>");
?
//3、做拼接
$("#myDiv").html( $("#myDiv").html() + "<h1>宝塔镇河妖</h1>" );
//4、获取标签中的纯文本
console.info($("#myDiv").text());
//设置标签中的纯文本
$("#myDiv").text("小鸡炖蘑菇")
?
? ? ? ?</script>
? ?</body>
</html>
操作属性
相关方法
方法 | 描述 | 对比 |
---|
val() | 获取/设置元素的value属性值 | 相当于:js对象.value | attr() | 获取/设置元素的属性 | 相当于:js对象.setAttribute() / js对象.getAttribute() | removeAttr() | 删除属性 | | prop() | 获取/设置元素的属性 | | removeProp() | 删除属性 | |
attr和prop区别
attr: 主要用于设置属性的值这一类的操作
prop: 主要用于判断属性是否存在或者操作布尔类型的操作
? ? ?例如: checked selected
代码
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>10-dom操作属性</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
? ? ? ?<form action="#" method="get">
? ? ? ? ? 姓名 <input type="text" name="username" id="username" value="德玛西亚"/> <br/>
?
? ? ? ? ? 爱好
? ? ? ? ? ?<input id="hobby" type="checkbox" name="hobby" value="perm" checked="checked">烫头<br/>
?
? ? ? ? ? ?<input type="reset" value="清空按钮"/>
? ? ? ? ? ?<input type="submit" value="提交按钮"/><br/>
? ? ? ?</form>
?
? ? ? ?<script>
? ? ? ? ? ?// 1.获取文本框value属性
? ? ? ? ? ?// 方式一:attr()
? ? ? ? ? ?// 2.1 获取value属性
? ? ? ? ? ?console.log($("#username").attr('type'));
? ? ? ? ? ?
? ? ? ? ? ?// 2.2 新增or修改value属性值
? ? ? ? ? ?$("#username").attr("class","username");
?
? ? ? ? ? ?// 2.3 删除value属性
? ? ? ? ? ?$("#username").removeAttr("value");
?
? ? ? ? ? ?// 方式二: val()
? ? ? ? ? ?// 获取属性值
? ? ? ? ? ?console.log($("#username").val());
?
? ? ? ? ? ?// 设置属性值
? ? ? ? ? ?$("#username").val('哈哈哈~~');
?
? ? ? ? ? ?// 2.获取爱好的checked属性
? ? ? ? ? ?/*
? ? ? ? ? ? ? 方式一: attr
? ? ? ? ? ? ? 选中返回: checked
? ? ? ? ? ? ? 末选中返回: undefined
? ? ? ? ? */
? ? ? ? ? ?console.log($("#hobby").attr('checked'));
?
? ? ? ? ? ?/*
? ? ? ? ? ? ? 方式二:prop()
? ? ? ? ? ? ? jq在1.6版本之后,弥补这个设计缺陷,如果该属性被选中返回true 末被选中返回false
? ? ? ? ? ? */
? ? ? ? ? ?console.log($("#hobby").prop('checked'));//返回属性的值的状态
?
? ? ? ? ? ?$("#hobby").prop('checked',false);//设置属性
?
? ? ? ? ? ?$("#username").prop("id","999");//也可以设置属性,注意不能自定义属性
?
? ? ? ?</script>
? ?</body>
</html>
操作样式
相关方法
方法 | 描述 |
---|
css() | 获取/设置样式 | addClass() | 添加class属性值 | removeClass() | 删除class属性值 | toggleClass() | 切换class属性,无添加,有删除 |
代码演示
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>11-dom操作样式</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ? ? ?<style>
? ? ? ? ? ?#p1 {
? ? ? ? ? ? ? ?background-color: red;
? ? ? ? ? }
?
? ? ? ? ? ?.mp {
? ? ? ? ? ? ? ?color: green;
? ? ? ? ? }
?
? ? ? ? ? ?.mpp {
? ? ? ? ? ? ? ?background-color: lightgray;
? ? ? ? ? }
? ? ? ?</style>
?
? ?</head>
? ?<body>
? ? ? ?<p id="p1">1. 设置一个css样式</p>
? ? ? ?<p id="p2">2. 通过class设置样式</p>
? ? ? ?<p id="p3">3.
? ? ? ? ? ?<button id="toggle">切换</button>
? ? ? ? ? class样式
? ? ? ?</p>
?
? ? ? ?<script>
? ? ? ? ? ?let $p1 = $('#p1');//获取p1
? ? ? ? ? ?let $p2 = $('#p2');//获取p2
? ? ? ? ? ?let $p3 = $('#p3');//获取p3
?
? ? ? ? ? ?// 1. 获取$p1的背景色
? ? ? ? ? ?console.log($p1.css('background-color'));
? ? ? ? ? ?// 1.1 设置$p1的背景色为gray色
? ? ? ? ? ?$p1.css('background-color', 'gray');
?
?
? ? ? ? ? ?// 2. 通过class设置样式
? ? ? ? ? ?$p2.addClass('mp mpp');
? ? ? ? ? ?$p2.removeClass('mpp');
?
? ? ? ? ? ?// 3. toggleClass() 切换一个class
? ? ? ? ? ?$('#toggle').click(function () {
? ? ? ? ? ? ? ?$p3.toggleClass('mpp');
? ? ? ? ? });
? ? ? ?</script>
? ?</body>
</html>
操作元素(节点操作)
相关方法
方法 | 描述 |
---|
$(标签) | 创建一个标签 $('<li>xxx</li>') | prepend() | 在父标签中将子标签放在第一个位置 | append() | 在父标签中将子标签放在最后一个位置 | empty() | 清空子元素 | remove() | 删除自己 |
代码演示
<!DOCTYPE html>
<html lang="zh-CN">
? ?<head>
? ? ? ?<meta charset="UTF-8">
? ? ? ?<title>13-dom操作元素</title>
? ? ? ?<script src="../js/jquery-3.2.1.min.js"></script>
? ?</head>
? ?<body>
?
? ? ? ?<ul id="star">
? ? ? ? ? ?<li>古力娜扎</li>
? ? ? ? ? ?<li>迪丽热巴</li>
? ? ? ?</ul>
?
? ? ? ?<script>
? ? ? ? ? ?let $star = $('#star'); // 无序列表
? ? ? ? ? ?
? ? ? ? ? ?// 1.前面添加马尔扎哈
? ? ? ? ? ?$star.prepend($('<li>马尔扎哈</li>'));
? ? ? ? ? ?
? ? ? ? ? ?// 2.后面添加萨瓦迪卡
? ? ? ? ? ?$star.append($('<li>萨瓦迪卡</li>'));
? ? ? ? ? ?
? ? ? ? ? ?// 3.移出所有列表项
? ? ? ? ? ?$star.empty();
? ? ? ? ? ?
? ? ? ? ? ?// 4.删除无序列表
? ? ? ? ? ?$star.remove();
? ? ? ?</script>
? ?</body>
</html>
事件绑定
jQuery的事件与js的事件的功能和作用一样,只是在使用语法上稍微有些差异。
jq事件绑定语法
jq对象.事件函数(function(){})
<!DOCTYPE html>
<html lang="zh-CN">
<head>
? ?<meta charset="UTF-8">
? ?<title>14-jq事件绑定</title>
? ?<script src="../js/jquery-3.2.1.min.js"></script>
</head>
<body>
<input type="button" value="js方式" id="jsBtn"> <br>
<input type="button" value="jq方式" id="jqBtn"> <br>
?
<script>
? ?// js事件绑定
? ?document.getElementById('jsBtn').οnclick=function () {
? ? ? ?alert('js事件绑定')
? }
? ?// jq事件绑定
? ?$('#jqBtn').click(function () {
? ? ? ?alert('jq事件绑定')
? })
</script>
</body>
</html>
常见事件
点击事件
事件 | 描述 |
---|
click() | 单击事件 | dblclick() | 双击事件 |
焦点事件
事件 | 描述 |
---|
blur() | 失去焦点 | focus() | 元素获得焦点 |
鼠标事件
事件 | 描述 |
---|
mousedown() | 鼠标按钮被按下 | mouseup() | 鼠标按键被松开 | mousemove() | 鼠标被移动 | mouseover() | 鼠标移到某元素之上 | mouseout() | 鼠标从某元素移开 |
键盘事件
事件 | 描述 |
---|
keydown() | 某个键盘按键被按下 | keyup() | 某个键盘按键被松开 | keypress() | 某个键盘按键被按下并松开 |
改变事件
表单事件
案例
全选/全不选
<table id="tab1" border="1" width="800" align="center" >
? <tr>
?<td colspan="5"><input type="button" value="删除"></td>
? </tr>
? <tr>
?<th><input type="checkbox" οnclick="selectAll(this)" ></th>
?<th>分类ID</th>
?<th>分类名称</th>
?<th>分类描述</th>
?<th>操作</th>
? </tr>
? <tr>
?<td><input type="checkbox" class="itemSelect"></td>
?<td>1</td>
?<td>手机数码</td>
?<td>手机数码类商品</td>
?<td><a href="">修改</a>|<a href="">删除</a></td>
? </tr>
? <tr>
?<td><input type="checkbox" class="itemSelect"></td>
?<td>2</td>
?<td>电脑办公</td>
?<td>电脑办公类商品</td>
?<td><a href="">修改</a>|<a href="">删除</a></td>
? </tr>
? <tr>
?<td><input type="checkbox" class="itemSelect"></td>
?<td>3</td>
?<td>鞋靴箱包</td>
?<td>鞋靴箱包类商品</td>
?<td><a href="">修改</a>|<a href="">删除</a></td>
? </tr>
? <tr>
?<td><input type="checkbox" class="itemSelect"></td>
?<td>4</td>
?<td>家居饰品</td>
?<td>家居饰品类商品</td>
?<td><a href="">修改</a>|<a href="">删除</a></td>
? </tr>
</table>
?
<script src="js/jquery-3.4.1.js"></script>
<script>
?//分析:需要保证下边的选中状态和第一个复选框的选中状态一致即可
? ? ? ? ?function selectAll(obj){
//alert(obj.checked);//true false
? ? ? ? ? ?//获取下边的复选框 选中复选框为true,没选中为false
? ? ? ? ? ?$(".itemSelect").prop("checked",obj.checked);
? ? ? ? }
?
</script>
左右移动
<!DOCTYPE html>
<html>
? <head>
? ? ?<meta charset="UTF-8">
? ? ?<title></title>
?
? ? ?<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>
?
? </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>
?
?<script src="js/jquery-3.4.1.js"></script>
?<script>
?
? ? //需求:实现下拉列表选中条目左右选择功能
? ?
? ? $(function () {
? ? ? ?//toRight
? ? ? ?$("#toRight").click(function () {
? ? ? ? ? ? ? ?//append 元素后面添加
? ? ? ? ? //获取右边的下拉列表对象,append(左边下拉列表选中的option)
? ? ? ? ? $("#rightName").append($("#leftName > option:selected"));
? ? ? ? ? });
?
? ? ? ? ? ?//toLeft
? ? ? ? ? ?$("#toLeft").click(function () {
? ? ? ? ? ? ? ?//appendTo ? 获取右边选中的option,将其移动到左边下拉列表中
? ? ? ? ? $("#rightName > option:selected").appendTo($("#leftName"));
?
? ? ? ? ? });
? ? ? });
?</script>
? </body>
</html>
?
|