zoukankan      html  css  js  c++  java
  • JQuery

    今日内容

    JQuery 基础:

    1. 概念
    2. 快速入门
    3. JQuery对象和JS对象区别与转换
    4. 选择器
    5. DOM操作
    6. 案例

    JQuery 高级:

    1. 动画
    2. 遍历
    3. 事件绑定
    4. 插件
    5. 案例

    JQuery基础

    1. 概念: 一个JavaScript框架。简化JS开发
    	* jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨	是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优	化HTML文档操作、事件处理、动画设计和Ajax交互。
    
    	* JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已。
    	
    2. 快速入门
    	1. 步骤:
    		1. 下载JQuery
    			* 目前jQuery有三个大版本:
    				1.x:兼容ie678,使用最为广泛的,官方只做BUG维护,
    					 功能不再新增。因此一般项目来说,使用1.x版本就可以了,
    					 最终版本:1.12.4 (2016年5月20日)
    				2.x:不兼容ie678,很少有人使用,官方只做BUG维护,
    					 功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,
    					 最终版本:2.2.4 (2016年5月20日)
    				3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求,
    					 一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
    					 目前该版本是官方主要更新维护的版本。最新版本:3.4.1(2020年2月29日)
    			* jquery-xxx.js 与 jquery-xxx.min.js区别:
    				1. jquery-xxx.js:开发版本。给程序员看的,有良好的缩进和注释,体积大一些。
    				2. jquery-xxx.min.js:生产版本。程序中使用,没有缩进,体积小一些,程序加载更快。
    
    		2. 导入JQuery的js文件:导入min.js文件
    		
    		3. 使用
    			var div1 = $("#div1");
    			alert(div1.html());
    
    3. JQuery对象和JS对象区别与转换
    	1. JQuery对象在操作时,更加方便。
        2. JQuery对象和js对象方法不通用的.
        3. 两者相互转换
            * jq -- > js : jq对象[索引] 或者 jq对象.get(索引)
            * js -- > jq : $(js对象)
    
    4. 选择器:筛选具有相似特征的元素(标签)
    	1. 基本操作学习:
    		1. 事件绑定
    			//1.获取b1按钮
                $("#b1").click(function(){
                    alert("abc");
                });
    		2. 入口函数(dom文档加载完成之后执行该函数中的代码)
    			 $(function () {
    	           
       			 });
    			 window.onload  和 $(function) 区别
                     * window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉
                     * $(function)可以定义多次的。
    		3. 样式控制:css方法
    			 // $("#div1").css("background-color","red");
          		$("#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[属性名]") 选择包含指定属性的A元素
    			2. 属性选择器
    				* 语法: $("A[属性名='值']") 选择包含指定属性等于指定值的A元素
    					* 属性名^='值':包含属性且以指定值开始
    					* 属性名$='值':包含属性且以指定值结尾
    					* 属性名*='值':包含属性且属性值包含指定值
    			3. 复合属性选择器
    				* 语法: $("A[属性名='值'][]...") 选择包含多个属性条件的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~h6)元素,固定写法
    		5. 表单过滤选择器
    			1. 可用元素选择器 
    				* 语法: :enabled 获得可用元素
    			2. 不可用元素选择器 
    				* 语法: :disabled 获得不可用元素
    			3. 选中选择器 
    				* 语法: :checked 获得单选/复选框选中的元素
    			4. 选中选择器 
    				* 语法: :selected 获得下拉框选中的元素
    
    5. DOM操作
    	1. 内容操作
    		1. html(): 获取/设置元素的标签体内容   <a><font>内容</font></a>  --> <font>内容</font>
    		2. text(): 获取/设置元素的标签体纯文本内容   <a><font>内容</font></a> --> 内容  设置时会将<font>内容</font>全部改为要设置的指定值
    		3. val(): 获取/设置元素的value属性值
    		
    	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",则将属性值one删除掉。  如果元素对象上不存在class="one",则添加
    			4. css("属性","值"):为元素添加/修改css属性
    			
    	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()
    			* 对象1.insertAfter(对象2):将对象1添加到对象2后边。对象1和对象2是兄弟关系
    		8. insertBefore()
    			* 对象1.insertBefore(对象2):将对象1添加到对象2前边。对象1和对象2是兄弟关系
    
    		9. remove():移除元素
    			* 对象.remove():将对象删除掉
    		10. empty():清空元素的所有后代元素
    			* 对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点
    		11. .clone():克隆元素
    

    案例

    隔行换色

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script  src="../../js/jquery-3.3.1.min.js"></script>
    		
    		<script>
    			//需求:将数据行的奇数行背景色设置为 pink,偶数行背景色设置为 yellow
    			$(function(){
    				//1. 获取数据行的奇数行的tr,设置背景色为pink
    				$("tr:gt(1):odd").css("backgroundColor","pink");
    				//2. 获取数据行的偶数行的tr,设置背景色为yellow
    				$("tr:gt(1):even").css("backgroundColor","yellow");
    			});
    		</script>
    	</head>
    	<body>
    		<table id="tab1" border="1" width="800" align="center" >
    			<tr>
    				<td colspan="5"><input type="button" value="删除"></td>
    			</tr>
    			<tr style="background-color: #999999;">
    				<th><input type="checkbox"></th>
    				<th>分类ID</th>
    				<th>分类名称</th>
    				<th>分类描述</th>
    				<th>操作</th>
    			</tr>
    			<tr>
    				<td><input type="checkbox"></td>
    				<td>0</td>
    				<td>手机数码</td>
    				<td>手机数码类商品</td>
    				<td><a href="">修改</a>|<a href="">删除</a></td>
    			</tr>
    			<tr>
    				<td><input type="checkbox"></td>
    				<td>1</td>
    				<td>电脑办公</td>
    				<td>电脑办公类商品</td>
    				<td><a href="">修改</a>|<a href="">删除</a></td>
    			</tr>
    			<tr>
    				<td><input type="checkbox"></td>
    				<td>2</td>
    				<td>鞋靴箱包</td>
    				<td>鞋靴箱包类商品</td>
    				<td><a href="">修改</a>|<a href="">删除</a></td>
    			</tr>
    			<tr>
    				<td><input type="checkbox"></td>
    				<td>3</td>
    				<td>家居饰品</td>
    				<td>家居饰品类商品</td>
    				<td><a href="">修改</a>|<a href="">删除</a></td>
    			</tr>
    		</table>
    	</body>
    </html>
    

    全选和全部选

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script  src="../../js/jquery-3.3.1.min.js"></script>
    		<script>
    			//分析:需要保证下边的选中状态和第一个复选框的选中状态一致即可
    			function selectAll(obj) {
    				//获取下面的复选框
    				$(".itemSelect").prop("checked",obj.checked);
    			}
    		</script>
    	</head>
    	<body>
    		<table id="tab1" border="1" width="800" align="center" >
    			<tr>
    				<td colspan="5"><input type="button" value="删除"></td>
    			</tr>
    			<tr>
    				<th><input type="checkbox" onclick="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>
    	</body>
    </html>
    

    QQ表情选择

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8" />
        <title>QQ表情选择</title>
    	 <script  src="../../js/jquery-3.3.1.min.js"></script>
        <style type="text/css">
        *{margin: 0;padding: 0;list-style: none;}
    
        .emoji{margin:50px;}
        ul{overflow: hidden;}
        li{float: left; 48px;height: 48px;cursor: pointer;}
        .emoji img{ cursor: pointer; }
        </style>
    	<script>
            //需求:点击qq表情,将其追加到发言框中
            //1.给img图片添加onclick事件
            $(function () {
                $("ul img").click(function () {
                    //2.追加到p标签中即可。
                    $(".word").append($(this).clone()); //需要将js对象转为jq,才可使用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>
    

    多选下拉列表左右移动

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script  src="../../js/jquery-3.3.1.min.js"></script>
    		<script>
    		//需求:实现下拉列表选择条目左右选择功能
    			$(function () {
    				//toRight
    				$("#toRight").click(function () {
    					//获取右边的下拉列表对象,append(左边下拉列表选中的option)
    					$("#rightName").append($("#leftName > option:selected"));
    				})
    				//toLeft
    				$("#toLeft").click(function () {
    					//appendTo 获取右边选中的option,将其移动到左边下拉列表中
    					$("#rightName > option:selected").appendTo($("#leftName"))
    				})
    			});
    		</script>
    
    		<style>
    			#leftName , #btn,#rightName{
    				float: left;
    				 100px;
    				height: 300px;
    			}
    			#toRight,#toLeft{
    				margin-top:100px ;
    				margin-left:30px;
    				 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>
    	</body>
    </html>
    

    JQuery 高级

    1. 动画
    	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)
    			1. 语法:
    				jquery对象.each(function(index,element){});
    					* index:就是元素在集合中的索引
    					* element:就是集合中的每一个元素对象
    					* this:集合中的每一个元素对象
    			2. 回调函数返回值:
    				* true:如果当前function返回为false,则结束循环(break)。
    				* false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)
    		2. $.each(object, [callback])
    		3. for..of: jquery 3.0 版本之后提供的方式
    			for(元素对象 of 容器对象)
    	
    3. 事件绑定
    	1. jquery标准的绑定方式
    		* jq对象.事件方法(回调函数);
    		* 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。
    			* 表单对象.submit();//让表单提交
    	2. on绑定事件/off解除绑定
    		* jq对象.on("事件名称",回调函数)
    		* jq对象.off("事件名称")
    			* 如果off方法不传递任何参数,则将组件上的所有事件全部解绑
    	3. 事件切换:toggle
    		* jq对象.toggle(fn1,fn2...)
    			* 当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2...
    			
    		* 注意:1.9版本 .toggle() 方法删除,jQuery Migrate(迁移)插件可以恢复此功能。
    			 <script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" 
    
    4. 插件:增强JQuery的功能
    	1. 实现方式:
    		1. $.fn.extend(object) 
    			* 增强通过JQuery获取的对象的功能  $("#id")
    		2. $.extend(object)
    			* 增强JQuery对象自身的功能  $/JQuery
    

    案例

    广告显示和隐藏

    		<!DOCTYPE html>
    		<html>
    		<head>
    		    <meta charset="UTF-8">
    		    <title>广告的自动显示与隐藏</title>
    		    <style>
    		        #content{100%;height:500px;background:#999}
    		    </style>
    		
    		    <!--引入jquery-->
    		    <script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
    		    <script>
    		        /*
    		            需求:
    		                1. 当页面加载完,3秒后。自动显示广告
    		                2. 广告显示5秒后,自动消失。
    		
    		            分析:
    		                1. 使用定时器来完成。setTimeout (执行一次定时器)
    		                2. 分析发现JQuery的显示和隐藏动画效果其实就是控制display
    		                3. 使用  show/hide方法来完成广告的显示
    		         */
    		
    		        //入口函数,在页面加载完成之后,定义定时器,调用这两个方法
    		        $(function () {
    		           //定义定时器,调用adShow方法 3秒后执行一次
    		           setTimeout(adShow,3000);
    		           //定义定时器,调用adHide方法,8秒后执行一次
    		            setTimeout(adHide,8000);
    		        });
    		        //显示广告
    		        function adShow() {
    		            //获取广告div,调用显示方法
    		            $("#ad").show("slow");
    		        }
    		        //隐藏广告
    		        function adHide() {
    		            //获取广告div,调用隐藏方法
    		            $("#ad").hide("slow");
    		        }
    		    </script>
    		</head>
    		<body>
    		<!-- 整体的DIV -->
    		<div>
    		    <!-- 广告DIV -->
    		    <div id="ad" style="display: none;">
    		        <img style="100%" src="../img/adv.jpg" />
    		    </div>
    		    <!-- 下方正文部分 -->
    		    <div id="content">
    		        正文部分
    		    </div>
    		</div>
    		</body>
    		</html>
    

    抽奖

    		<!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'>
    		        /*
    		            分析:
    		                1. 给开始按钮绑定单击事件
    		                    1.1 定义循环定时器
    		                    1.2 切换小相框的src属性
    		                        * 定义数组,存放图片资源路径
    		                        * 生成随机数。数组索引
    
    		                2. 给结束按钮绑定单击事件
    		                    2.1 停止定时器
    		                    2.2 给大相框设置src属性
    		         */
    		        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;//开始定时器的id
    		        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.0-----6.9999
    		                    //1.3设置小相框的src属性
    		                    $("#img1ID").prop("src",imgs[index]);
    		                },20);
    		            });
    
    		            //2. 给结束按钮绑定单击事件
    		            $("#stopID").click(function () {
    		                //处理按钮是否可以使用的效果
    		                $("#startID").prop("disabled",false);
    		                $("#stopID").prop("disabled",true);
    
    		               // 1.1 停止定时器
    		                clearInterval(startId);
    		               // 1.2 给大相框设置src属性
    		                $("#img2ID").prop("src",imgs[index]).hide();
    		                //显示1秒之后
    		                $("#img2ID").show(1000);
    		            });
    		        });
    		    </script>
    		</head>
    		<body>
    		
    		<!-- 小像框 -->
    		<div style="border-style:dotted;160px;height:100px">
    		    <img id="img1ID" src="../img/man00.jpg" style="160px;height:100px"/>
    		</div>
    		
    		<!-- 大像框 -->
    		<div
    		        style="border-style:double;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="150px;height:150px;font-size:22px">
    		
    		<!-- 停止按钮 -->
    		<input
    		        id="stopID"
    		        type="button"
    		        value="点击停止"
    		        style="150px;height:150px;font-size:22px">
    		</body>
    		</html>
  • 相关阅读:
    5 Things Every Manager Should Know about Microsoft SharePoint 关于微软SharePoint每个经理应该知道的五件事
    Microsoft SharePoint 2010, is it a true Document Management System? 微软SharePoint 2010,它是真正的文档管理系统吗?
    You think you use SharePoint but you really don't 你认为你使用了SharePoint,但是实际上不是
    Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理
    Creating Your Own Document Management System With SharePoint 使用SharePoint创建你自己的文档管理系统
    MVP模式介绍
    权重初始化的选择
    机器学习中线性模型和非线性的区别
    神经网络激励函数的作用是什么
    深度学习中,交叉熵损失函数为什么优于均方差损失函数
  • 原文地址:https://www.cnblogs.com/p1ng/p/12392472.html
Copyright © 2011-2022 走看看