前端进阶--jQuery
一、jQuery介绍
1.jQuery能做什么
● 访问和操作DOM元素
● 控制页面样式
● 对页面事件进行处理
● 扩展新的jQuery插件
● 与Ajax技术完美结合
jQuery能做的JavaScript也都能做,但使用jQuery能大幅提高开发效率。
其实,jQuery和JavaScript的之间关系,可以理解为“成语”和“白话文”之间的关系。成语是对白话文的高度压缩,而jQuery也是对JavaScript的高度压缩库
2.jQuery的优势
● 体积小,压缩后只有100KB左右
● 强大的选择器
● 出色的DOM封装
● 可靠的事件处理机制
● 出色的浏览器兼容性
二、jQuery的使用
jQuery作为一个单独存在的js文件,并不会与其他的js文件发生冲突
在页面中使用传统引入js文件的方式引入即可。
<script src="js/jquery-3.4.1.min.js"></script>
1.基本的语法介绍
<script>$(selector).action();
</script>
说明:
● 工厂函数 $ () :将DOM对象转化为jQuery对象
● 选择器 selector:获取需要操作的DOM 元素(用法基本上和css一致 )
● 方法action():jQuery中提供的方法,其中包括绑定事件处理的方法“$”等同于“ jQuery ”
<body><p>Hello jQuery!</p><script src="js/jquery-3.4.1.min.js"></script><script>alert( $("p").text());</script>
</body>
2.jQuery对象与DOM对象
DOM对象和jQuery对象分别拥有一套独立的方法,不能混用
<body><p id="title">Hello</p><script src="js/jquery-3.4.1.min.js"></script><script>//js获取dom对象alert (document.getElementById("title").innerHTML);//jq获取dom对象alert($("p").html());var jsdom = document.getElementById("title");var jqdom = $("p");//js--->jqjqdom = $(jsdom);alert(jqdom.html());//jq--->jsjsdom = jqdom.get(0);alert(jsdom.innerHTML);</script>
</body>
3.选择器
①基本选择器
基本选择器包括标签选择器、类选择器、ID选择器、并集选择器、交集选择器和全局选择器
<p>中国</p>
<p>上海</p>
<p class="jy">加油</p>
<p id="wan">祖国万岁</p>
<h3 class="jy">祖国万岁</h3>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("p").css("color","red"); // 标签选择器,获得所有的p$(".jy").css("color","red"); //类选择器$("#wan").css("color","red"); //ID选择器,更具备唯一性$(".jy,#wan").css("color","red"); // 并集选择器,.jy和#wan$("h3.jy").css("color","red"); // 交集选择器,既是h3标签,又拥有.jy的元素
</script>
②层次选择器
<h3>000</h3>
<div id="x">111<p>p1</p><div><p>p2</p></div>
</div>
<h3>222</h3>
<h3>333</h3>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("#x p").css("color","red"); // 后代选择器,忽略层级$("#x>p").css("color","red"); // 子代选择器,只负责子级$("#x+h3").css("color","red"); // 相邻元素选择器,下一个紧邻的兄弟h3$("#x~h3").css("color","red"); // 同辈元素选择器,下面的所有兄弟h3
</script>
③属性选择器
<a href="www.baidu.com">百度</a>
<a href="www.sina.com.cn">新浪网</a>
<a href="http://www.163.com">网易</a>
<p href="x">哈哈1</p>
<p href="x" title="x">哈哈2</p>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("[href]").css("color","red"); // 选取拥有href属性的元素$("[href='x']").css("color","red"); // 选取拥有href=x的元素$("a[href!='x']").css("color","red"); // 选取a标签中href不等于x的元素$("[href^='www']").css("color","red"); // 选取href属性以www开头的元素$("[href$='com']").css("color","red"); // 选取href属性以com结尾的元素$("[href*='a']").css("color","red"); // 选取href属性包含a的元素$("p[href][title='x']").css("color","red"); // 选取拥有href属性和title属性,并且title=x的p元素
</script>
④过滤选择器
<h2 id="h2#x">名著</h2>
<ul><li>三国演义</li><li>水浒传</li><li>西游记</li><li>红楼梦</li><li>西厢记</li>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("li:first").css("color","red"); // 第一个li$("li:last").css("color","red"); // 最后一个li$("li:even").css("color","red"); // 偶数行的li$("li:odd").css("color","red"); // 奇数行的li$("li:eq(2)").css("color","red"); // 下标为2的li$("li:gt(1)").css("color","red"); // 下标大于1的li$("li:lt(2)").css("color","red"); // 下标小于2的li$("#h2\\#x").css("color","red"); // 使用转义符
</script>
4.事件
①鼠标事件
鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件,常用鼠标事件有:
<img src="img/1.jpg" width="300">
<img src="img/1.jpg" width="300">
<img src="img/1.jpg" width="300">
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("img").click( function(){//点击一下,换照片//$("img").attr( "src","img/2.jpg" );//照片全部替换$(this).attr( "src","img/2.jpg" ); //this就是事件触发的源头} );$("img").mouseover( function(){ //移动到元素上$(this).css( "border","2px solid red" );} );$("img").mouseout( function(){ //离开元素$(this).css( "border","2px solid white" );} );
</script>
②键盘事件
用户每次按下或者释放键盘上的键时都会产生事件,常用键盘事件有:
<input>
<h3></h3>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("input").keyup( function(){var str = $(this).val(); // 获取框中的值$("h3").text( str ); // 将h3元素中的文本内容更改为str} );
</script>
③表单事件
当元素获得焦点时,会触发focus事件,失去焦点时,会触发blur事件,详见下表:
<form action=""><p>帐号: <input id="a" value="请输入帐号..."> </p><p>密码: <input id="b"> </p>
</form>
<script src="js/jquery-3.4.1.min.js"></script>
<script>//获得焦点(激活/点击一下)$("#a").focus(function(){$(this).val("");});//失去焦点(未激活/未点击)$("#a").blur(function(){$(this).val("请输入帐号...");});
</script>
④鼠标悬停复合事件
hover()方法相当于mouseover与mouseout事件的组合
<img src="img/3.jpg" width="400">
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("img").hover(function(){$(this).css("border","5px solid red");},function(){$(this).css("border","5px solid white");});
</script>
⑤连续点击复合事件
toggle()除了可以模拟鼠标的连续单击事件
<h2>名著</h2>
<ul><li>西游记</li><li>水浒传</li><li>三国演义</li><li>红楼梦</li><li>西厢记</li>
</ul><script src="js/jquery-3.4.1.min.js"></script><script>$("h2").click(function(){$("ul").toggle(); // 连续点击,ul的可见和隐藏进行切换});
</script>
⑥事件的动态绑定
对dom元素绑定事件的另一种写法
● 绑定一个事件
$(".del").on('click', function() {alert('hello');
})
● 绑定多个事件
$(".del").on('click mouseover', function() {alert('hello');
})
5.元素的隐藏和显示
①改变元素的宽和高(带动画效果)
● show( speed ):显示
● hide( speed ):隐藏
● toggle( speed )等价于show+hide : 显示的隐藏,隐藏的显示
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<style>div{width: 200px;height: 200px;background-color: black;}
</style>
<body><button id="btn1">显示</button><button id="btn2">隐藏</button><button id="btn3">切换</button><div></div><script src="js/jquery-3.4.1.min.js"></script><script>$("#btn2").click(function(){//fast:快速的//slow:缓慢的//毫秒:自定义$("div").hide(2000);});$("#btn1").click(function(){$("div").show('slow');});$("#btn3").click(function(){$("div").toggle(1000);});</script>
</body>
②改变元素的高(拉伸效果)
● slideDown( speed ) :显示
● slideUp( speed ):隐藏
● slideToggle( speed )等价于slideDown+slideUp
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<script>$("#btn2").click(function(){$("div").slideUp(1000); //向上收缩});$("#btn1").click(function(){$("div").slideDown(1000); //向下伸展});$("#btn3").click(function(){$("div").slideToggle(1000); //切换});
</script>
③不改变元素的大小(淡入淡出效果)
● fadeIn( speed ) 显示
● fadeOut( speed ) 隐藏
● fadeToggle( speed ) 等价于fadeIn+fadeOut动画
● fadeTo( speed , 透明度 ) 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<script>$("#btn2").click(function(){$("div").fadeOut(1000); // 隐藏:淡出我的视线});$("#btn1").click(function(){$("div").fadeIn(1000); // 显示:映入眼帘});$("#btn3").click(function(){$("div").fadeToggle(1000); // 切换});$("#btn4").click(function(){$("div").fadeTo(1000,0.5); // 1秒内变成50%的透明度});
</script>
④链
链是允许我们在同一个元素上在一条语句中运行多个jQuery方法,可以把动作/方法链接在一起 ;
例如:点击一次按钮,让div完成4个指定动作
- 背景变粉
- 字体变绿
- 收缩
- 拉伸
<style>div{width: 200px;height: 200px;background-color: black;color:white;font-size: 3em;}
</style>
<body><button>试试</button><div>hello</div><script src="js/jquery-3.4.1.min.js"></script><script>$("button").click(function(){$("div").css("backgroundcolor","pink").css("color","green").slideUp(1000).slideDown(1000);});</script>
</body>
6.DOM和CSS的操作
①属性函数
● attr( “属性” ); 获得元素的属性值
attr( “属性” , “新值” ); 修改元素的属性值
attr( 样式参数 ) :样式参数可以写成json格式
<body><button id="btn1">点我试试</button><hr><img src="img/1.jpg" title="美女大图" width="300"><script src="js/jquery-3.4.1.min.js"></script><script>$("#btn1").click(function(){$("img").attr("src","img/2.jpg");$("img").attr("title","高清无码");$("img").attr( {width:"200",height:"200"} );});</script>
</body>
● val() ; 获得表单元素中的value值
val(“x”) 修改表单元素中的value值
● html(); 获得元素中的内容(标签+文本)
html(“x”) 修改元素中的内容(标签+文本)
● text(); 获得元素中的文本
text(“x”) 修改元素中的文本
<button>试试</button>
<hr>
<input id="username">
<div><h1><i>中国加油!</i></h1>
</div>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){alert($("input").val()); //input框中的值$("input").val("哈哈哈"); //修改input框中的值alert( $("div").html() ); //获得div中的内容(包含标签信息)alert( $("div").text() ); //获得div中的内容(不包含标签信息,只包含文本内容)$("div").text("祖国万岁!"); //修改div中的内容(全部内容都覆盖)});
</script>
②样式函数
● css( “属性”); 获得该属性值
● css( “属性”,“值”); 设置属性的值
● css( { json} ); 设置多个属性的值
<style>div{width: 150px;height: 150px;background-color: #000;}
</style>
<body><button>试试</button><hr><div></div><script src="js/jquery-3.4.1.min.js"></script><script>$("button").click(function(){var w = $("div").css("width"); // 获取css属性,width的值//1.一个键值对$("div").css("background-color","pink");//2.链式编程$("div").css("background-color","pink").css("borderradius","50%");//3.json为参数$("div").css({opacity:"0.4",background:"orange",borderRadius:"50%"} );});</script>
</body>
● width(); 获得元素的宽度
● width( number ); 修改元素的宽度
● height(); 获得元素的高度
● height( number ); 修改元素的高度
<style>div{width: 150px;height: 150px;background-color: #000;}
</style>
<body><button>试试</button><hr><div></div><script src="js/jquery-3.4.1.min.js"></script><script>$("button").click(function(){var w = $("div").width(); // (无参)获取宽度var h = $("div").height();// (无参)获取高度alert("宽:"+w+"px,高:"+h+"px");$("div").width("300"); // (传参)修改宽度$("div").height("300"); //(传参)修改高度});</script>
</body>
③类样式函数
● addClass(); 为元素添加类样式
● removeClass(); 将元素的类样式移除
● toggleClass(); 样式的切换(有->无,无->有)
<style>div{width: 100px;height: 100px;background-color: #000;}.a{background: palevioletred;border-radius: 50%;}.b{border:5px dashed darkcyan;opacity: 0.6;}.cn{background: #000;color:#FFF;font-family: 微软雅黑;}
</style>
<body><button id="btn1">试试</button><button id="btn2">取消透明度</button><button id="btn3">样式切换</button><hr><div></div><h1>中华人民共和国万岁!</h1><script src="js/jquery-3.4.1.min.js"></script><script>$("#btn1").click(function(){$("div").addClass("a");$("div").addClass("a b");});$("#btn2").click(function(){$("div").removeClass("b");});$("#btn3").click(function(){$("h1").toggleClass("cn");});</script>
</body>
④节点操作
● 创建节点
工厂函数$()用于获取或创建节点
● 插入节点
a.插入子节点
b.插入同辈节点
● 替换节点
replaceWith()
replaceAll()
● 复制节点
clone()
● 删除节点
remove()删除整个节点
empty()清空节点内容
<input> <button id="test">测试</button>
<ul><li>西游记</li><li>红楼梦</li><li>三国演义</li>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("#test").click(function(){var bookname = $("input").val();var newli = $("<li>"+bookname+"</li>"); //通过工厂函数,创建新的li节点/*添加子节点*/$("ul").append(newli); // newli添加到ul后面newli.appendTo("ul"); // newli添加到ul后面$("ul").prepend(newli); // newli添加到ul前面newli.prependTo("ul");/*添加同辈节点*/$("li:last").after( newli ); // newli添加到最后的li的后面newli.insertAfter("li:last");$("li:last").before(newli); //newli添加到最后的li的前面newli.insertBefore("li:last");/*替换节点*/$("li:eq(1)").replaceWith(newli); // 将第二个li替换成newlinewli.replaceAll( "li:eq(1)" );/*复制节点*/$("li:first").clone().insertAfter("li:last"); // 复制第一个li,并插入到最后一个li的后面/*删除节点*/$("li:eq(1)").empty(); // 清空了节点上的文本(节点并没有消失)$("li:eq(1)").remove(); //删除节点});
</script>
7.遍历节点
①祖先元素
用于向上遍历 DOM 树的方法
● parent() 返回被选元素的直接父元素,仅仅是上一级 (找爸爸)
● parents() 返回被选元素的所有祖先元素,它一路向上直到文档的根元素,可以选择辈分
<p><button>测试</button></p>
<ul><li>a</li><li><b>b</b></li><li>c</li>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){var x = $("b").parent().html(); // 找爸爸var x = $("b").parents("ul").html(); // 找祖宗 ulvar x = $("b").parents("body").html(); // 找祖宗 bodyalert( x );});
</script>
②同辈元素
● next() 获取紧邻匹配元素之后的元素
● prev() 获取紧邻匹配元素之前的元素
● siblings( [selector] ) 获取位于匹配元素前面和后面的所有同辈元素
<button>测试</button>
<p>p1</p>
<ul><li>a</li><li><b>b</b></li><li>c</li>
</ul>
<p>p2</p>
<p id="x">p3</p>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){var x = $("ul").next().text(); // 紧邻的下一个元素var x = $("ul").prev().text(); // 紧邻的上一个元素var x = $("ul").siblings("#x").text(); // 所有的兄弟中,id=x的var arr = $("ul").siblings(); // ul的所有兄弟,1个button,3个p,2个scriptfor(var i = 0 ;i< arr.length ;i++){alert(arr[i]);}});
</script>
③后代元素
后代是子、孙、曾孙等等
● children( [selector] ) 方法返回被选元素的所有直接子元素,“孩子”
<button>测试</button>
<ul><li>a</li><li>b</li><li>c</li>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){var x = $("ul").children().text(); //所有子节点:abcvar x = $("ul").children("li:first").text(); //ul中的第一个子节点alert(x);});
</script>
find( 选择器 ) 方法返回被选元素的后代元素,一路向下直到最后一个后代。
<button>测试</button>
<ul><li>盘古</li><li>蚩尤</li><li>刑天<p>龚工</p></li><h3>祝融</h3>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){var x = $("ul").find("p").text(); //在ul中查找p元素,忽略层级var x = $("ul").find("h3").text(); //在ul中查找h3元素,忽略层级var x = $("ul").find().text(); // 找什么?不知道!alert(x);});
</script>
④元素的过滤
● first():过滤第一个元素
● last():过滤最后一个元素
● eq(index):过滤到下标为index的元素
● not():除了什么之外的元素
● is():返回布尔,判断是不是这种元素
<button>测试</button>
<ul><li>盘古</li><li>蚩尤</li><li>刑天</li>
</ul>
<script src="js/jquery-3.4.1.min.js"></script>
<script>$("button").click(function(){var x = $("li").first().text(); // 第一个livar x = $("li").last().text(); // 最后一个livar x = $("li").eq(1).text(); // 下标为1的livar x = $("li").not("li:eq(1)").text(); // 除了下标为1的其余所有livar x = $("li").parent().is("ul"); // 返回布尔型,li的父节点是不是ulalert(x);});
</script>
三、案例
1.手风琴特效
<style>dd{display: none;/* 隐藏元素 */}
</style>
<body><nav><header>百度</header><ul><li><dl><dt>搜索</dt><dd>1.输入内容</dd><dd>2.开始搜索</dd></dl></li><li><dl><dt>地图</dt><dd>1.出发地</dd><dd>2.目的地</dd></dl></li><li><dl><dt>音乐</dt><dd>1.歌曲名</dd><dd>2.歌手名</dd></dl></li></ul></nav><script src="js/jquery-3.4.1.min.js"></script><script>$("nav dt").click(function(){//所有的dd全部都闭合上,除了自己的兄弟$("dd").not( $(this).siblings() ).slideUp(500);// 自己的兄弟进行切换,显示闭合上,闭合的显示出来$(this).siblings().slideToggle(500);})</script>
</body>
2.购物车结算
<style>.jian,.jia{border: 1px solid #9999;display: inline-block; /* 超链接a是行内元素,只能转换成行内块元素,才能改变宽和高 */width: 20px;height: 20px;text-align: center;text-decoration: none;}
</style>
<body><table border="1px" cellspacing="0" width="400px"><tr><td>商品编号</td><td>名称</td><td>单价</td><td>数量</td><td>总价</td></tr><tr><td>1</td><td>烤肠</td><td>3</td><td><a href="#" class="jian">-</a><span>1</span><a href="#" class="jia">+</a></td><td>3</td></tr><tr><td>2</td><td>手抓饼</td><td>10</td><td><a href="#" class="jian">-</a><span>1</span><a href="#" class="jia">+</a></td><td>10</td></tr><tr><td>3</td><td>大肉粽</td><td>6</td><td><a href="#" class="jian">-</a><span>1</span><a href="#" class="jia">+</a></td><td>6</td></tr></table><p style="width: 400px; text-align: right;">总价:<b style="color:red;">111</b> <button>提交订单</button></p><script src="js/jquery-3.4.1.min.js"></script><script>$(".jia").click(function(){var i = $(this).prev().text();//获得原来商品数量i++;$(this).prev().text(i);//现在商品数量var price = $(this).parent().prev().text();//单价var zong = i * price;//总价$(this).parent().next().text(zong);//现在商品总价getTotal();});$(".jian").click(function(){var i = $(this).next().text();i--;if(i == 0){//询问数量为0是否删除该商品if(confirm("是否删除该商品?")){$(this).parents("tr").remove();}}else{$(this).next().text(i);var price = $(this).parent().prev().text();//单价var zong = i * price;//总价$(this).parent().next().text(zong);//现在商品总价}getTotal();});//计算所有商品的总价//方法1function getTotal(){var sum = 0;var arr = $("tr:not(tr:first)").find("td:last");for(var i = 0;i<arr.length;i++){sum += Number(arr[i].innerHTML);}$("b").text(sum);}//方法2function getTotal(){var sum = 0;$("tr:not(tr:first)").find("td:last").each(function(){sum +=Number($(this).text());});$("b").text(sum);}</script>
</body>
前端进阶--jQuery相关推荐
- 前端进阶之路: 前端架构设计(2)-流程核心
可能很多人和我一样, 首次听到"前端架构"这个词, 第一反应是: "前端还有架构这一说呢?" 在后端开发领域, 系统规划和可扩展性非常关键, 因此架构师备受重视 ...
- 自学前端开发,前端进阶阶段需要学习哪些知识?
今天要跟大家分享的文章是关于web前端进阶阶段需要学习哪些知识?已经入门web前端想要提升自己技术的小伙伴们来和小编一起看一看本篇文章吧,希望本篇文章能够对大家有所帮助. 1.完善我们的基础知识 (1 ...
- 大前端进阶!NodeJS、Npm、Es6、Babel、Webpack、模块化开发
文章目录 大前端进阶 一.Node.js 1.1.Nodejs介绍和安装 1.2 .Nodejs入门 1.2.1.快速入门-Hello World 1.2.2.Node - 实现请求响应 1.2.3. ...
- 【Java全栈】Java全栈学习路线及项目全资料总结【JavaSE+Web基础+大前端进阶+SSM+微服务+Linux+JavaEE】
目录 jdk api 1.8中文版 jdk api 1.8_google.CHM 零:Java 全栈知识体系 第一阶段:JavaSE 一,程序应用(★★) 二,面向对象程序设计基础(★★★) 面向对象 ...
- 2021年高级前端进阶之路
YYDS 2021年高级前端进阶之路1.两边固定,中间自适应布局(1.用flex;2.用display:left;3.用相对定位和绝对定位结合)2.js判断字符串中出现次数最多的字符(1.用for循环 ...
- jquery 在div追加文本_前端技术--JQuery
JQuery 一.引言 1.JQuery是一个基于javascript语言的框架 --- 是对js代码的合理封装 2.js缺点,jquery优点 1)js代码比较复杂 var tag = docum ...
- jquery input值改变事件_前端技术--JQuery
JQuery 一.引言 1.JQuery是一个基于javascript语言的框架 --- 是对js代码的合理封装 2.js缺点,jquery优点 1)js代码比较复杂 var tag = docum ...
- 前端:jQuery笔记
前端:jQuery笔记 此系列文章乃是学习jQuery的学习笔记. Asp.net MVC Comet推送 摘要: 一.简介 在Asp.net MVC实现的Comet推送的原理很简单. 服务器端:接收 ...
- 前端进阶必备技能:Vue中如何定制动画效果
作为前端程序员,前端火起来的短短几年里技术更新迭代特别快,不仅是新的框架繁多,Vue,React,Angular轮番上场,各种工具,插件,库也是琳琅满目,就连基础的JavaScript语法的更新也是年 ...
最新文章
- mysql的binlog太多太大占用了空间的解决办法
- 基于变分自动编码器(Variational Autoencoders)疾病预测系统实战:(Keras实现并可视化训练和验证误差、最后给出topK准确率和召回率)
- 清除string内容_python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来...
- 【dfs】【bfs】【链表】 求连通分量 (ssl 1759)
- Android API Guides---Bluetooth
- Nginx rewrite规则整理
- 串口收数数码管显示(串口带协议带校验)
- 各种程序员的工作内容
- IMRAM: Iterative Matching with Recurrent Attention Memory for Cross-Modal Image-Text Retrieval
- “This probably means that you are not using fork to start your child processes and you hav报错
- Qt获取大华摄像头监控画面(RTSP流方式)
- 计算机之父阿兰·图灵传奇的一生
- Pixhawk系统架构介绍
- 服务器信号满格但网速很慢,4G信号满格网速却很慢?一招搞定!
- 树莓派怎么作为无线服务器,教大家用树莓派做一个无线路由器
- 求某门课号的成绩高于某个同学(例如李勇)任意一门成绩的学生学号和成绩
- SqlSugar学习总结1(基础操作)
- 一个讨论 TOPVIEW 财富数据的论坛!
- Opencv如何打开使用海康工业相机
- Android Studio调试之使用USB连接手机调试(详细版)