• jQuery


    一、jQuery简介

    1. 特点
    
    
    	1. 兼容所有浏览器
    	
    	2. 丰富的DOM选择器
    	
    	3. 链式表达式
    	
    	4. Ajax操作支持
    
    
    
    2. 语法
    
    	1. jQuery语法
    	
    	$(选择器).action(操作)
    	
    	2. 与JS对比
    
    	JS:
    
    		var pEle = document.getElementsByTagName('p')[0]
    		
    		pEle.style.color = 'red'
    		
    	jQuery:
    
    		$('p').css('color', 'green')
    

    二、选择器与筛选器

    1. 基本选择器
    
    	1. 标签选择器
    	
    		$('span')
    	
    	2. 类选择器
    	
    		$('.c1')
    	
    	3. id选择器
    	
    		$('#id')
    	
    	4. 组合选择器
    	
    		$('#d1, span');
    	
    	5. 配合使用
    	
    		$('div.c1')    // 找到有c1 class类的div标签
    	
    
    2. 层级选择器
    
    	1. 后代选择器
    	
    		$('x y');
    	
    	2. 儿子选择器
    	
    	
    		$('x > y')
    	
    	3. 毗邻选择器
    	
    		$('x + y')
    	
    	4. 兄弟选择器
    	
    		$('x ~ y')
    	
    
    3. 属性选择器
    
    	1. 找到含有‘username’属性的标签
    	
    		$('[username]')
    	
    	2. 找到含有username属性,且值为‘byx’的标签
    	
    		$('[username="byx"]')
    	
    	3. 找到在span标签下,username=byx的标签
    	
    		$('span[username="byx"]')
    	
    	
    4. 基本筛选器
    
    	1. 找第一个(:first)
    	
    		$('ul li:first')
    	
    	2. 找最后一个(:last)
    	
    		$('ul li:last')
    	
    	3. 匹配索引等于index的那个元素
    	
    		$('ul li:eq(2)')
    	
    	4. 匹配索引为偶数的元素,从0开始计数
    	
    		$('ul li:even')
    	
    	5. 匹配索引为奇数的元素,从0开始计数
    	
    		$('ul li:odd')
    	
    	6. 匹配所有大于给定索引值的元素
    	
    		$('ul li:gt(3)')
    	
    	7. 匹配所有小于给定索引值的元素
    	
    		$('ul li:lt(3)')
    	
    	8. 移除所有满足not条件的标签
    	
    		$('div span:not('.c1')')
    	
    	9. 选取所有包含一个或多个标签在内的标签(从后代元素中找)
    
    		$('div:has('.c1')')
    	
    
    5. 表单筛选器
    
    	1. 找到所有的checkbox
    	
    		$(":checkbox")
    	
    	2. 找到可用的input标签
    	
    		<form>
    		  <input name="email" disabled="disabled" />
    		  <input name="id" />
    		</form>
    		
    		$("input:enabled")  // 找到可用的input标签
    	
    	
    	3. 找到被选中的option
    	
    		<select id="s1">
    		  <option value="beijing">北京市</option>
    		  <option value="shanghai">上海市</option>
    		  <option selected value="guangzhou">广州市</option>
    		  <option value="shenzhen">深圳市</option>
    		</select>
    		
    		$(":selected")  // 找到所有被选中的option
    	
    	
    	4. 注意,在使用checked查找时,会将selected找到,这是一个bug。
    	
    
    6. 筛选器方法
    
    	1. 下一个元素
    	
    		$spanEle.next()
    		$spanEle.nextAll()
    		$spanEle.nextUntil('#d2')
    	
    	
    	2. 上一个元素
    	
    		$spanEle.prev()
    		$spanEle.prevAll()
    		$spanEle.prevUntil('#d2')
    	
    	
    	3. 父亲元素
    	
    		$("#id").parent()
    		$("#id").parent().parent()
    		$("#id").parents()  // 查找当前元素的所有的父辈元素
    		$("#id").parentsUntil('html') // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
    	
    	
    	4. 儿子和兄弟元素
    	
    		$("#id").children();// 儿子们
    		$("#id").siblings();// 兄弟们
    	
    	
    	5. 查找div内部的span
    	
    		$('div').find('span')
    	
    	
    	6. 补充
    
    		.first() // 获取匹配的第一个元素
    		.last() // 获取匹配的最后一个元素
    		.not() // 从匹配元素的集合中删除与指定表达式匹配的元素
    		.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
    		.eq() // 索引值等于指定值的元素
    

    三、jQuery操作标签

    1. CSS样式操作
    
    	1. 添加指定的CSS类名
    	
    		$('div').addclass('bg_red')
    	
    	2. 移除指定的CSS类名
    	
    		$('div').removeClass('bg_red')
    	
    	3. 判断是否有指定类名
    	
    		$('div').hasClass('bg_red')
    	
    	4. 切换CSS类名,如果有就移除,没有就添加
    	
    		$('div').toggleClass('bg_red')
    	
    	5. 设置CSS属性
    	
    		$('p').css('color', 'red')
    	
    	P.S:
    	
    		JS
    			.style.color
    			
    		jQuery
    			.css('color', 'red')
    				
    	P.P.S
    	
    		搭骨架用HTML,调样式用CSS,加动态效果用JS,让三种语言各司其职。
    	
    
    2. 位置操作
    
    	1. 获取匹配元素在当前窗口的相对偏移或设置元素位置
    	
    		offset()
    	
    	2. 获取匹配元素相对父元素的偏移
    	
    		position()
    	
    	3. 获取匹配元素相对滚动条顶部的偏移,括号内可以传数字进行移动
    	
    		$(window).scrollTop()
    	
    	4. 获取匹配元素相对滚动条左侧的偏移,括号内可以传数字进行移动
    	
    		$(window).scrollLeft()
    	
    
    3. 尺寸
    
    	1. 文本高
    	
    		$('p').height()
    	
    	2. 文本宽
    	
    		$('p').width()
    	
    	3. 文本+padding高
    	
    		$('p').innerHeight()
    	
    	4. 文本+padding宽
    	
    		$('p').innerWidth()
    	
    	5. 文本+padding+边框高
    	
    		$('p').outerHeight
    	
    	6. 文本+padding+边框宽
    
    		$('p').outerweight
    	
    
    4. 文本操作
    
    	1. 获取标签内部文本值,可以在括号内传参数设置值。
    	
    		$('div').text()
    	
    	2. 获取标签内部的HTML代码,可以在括号内传参数设置值。
    	
    		$('div').html()
    	
    	3. 获取标签内用户输入的值,可以在括号内加参数设置值。
    
    		$('div').val()
    
    	
    	P.S
    	
    		JS
    			
    			innerText()
    			innerHtml()
    			value
    	
    
    5. 属性操作
    
    	1. 用于id等或自定义属性:
    	
    		1. 查找第一个匹配到的属性名称
    		
    			$('p').attr('id')
    		
    		2. 为匹配到的属性设置一个属性值
    		
    			$('p').attr('id', 'byx')
    		
    		3. 为匹配到的属性设置多个值
    		
    			$('p').attr({'id': 'byx', 'password': '123'})
    		
    		4. 移除属性
    		
    			$('p').removeAttr('id')
    		
    	
    	2. 用于checkbox和radio,可以动态识别选择。
    	
    		1. 获取属性,识别标签是否被选中,返回布尔值。
    		
    			$('input').first().prop('checked')
    		
    		2. 修改属性
    		
    			$('input').first().prop('checked',false)
    		
    		3. 移除属性
    	
    			$('input').first().removeProp('id')
    	
    	
    6. 文档处理
    
    	1. 添加到指定元素内部的后面
    	
    		$(A).append(B)// 把B追加到A
    		$(A).appendTo(B)// 把A追加到B
    	
    	
    	2. 添加到指定元素内部的前面
    	
    		$(A).prepend(B)// 把B前置到A
    		$(A).prependTo(B)// 把A前置到B
    	
    	
    	3. 添加到指定元素外部的后面
    	
    		$(A).after(B)// 把B放到A的后面
    		$(A).insertAfter(B)// 把A放到B的后面
    	
    	
    	4. 添加到指定元素外部的前面
    	
    		$(A).before(B)// 把B放到A的前面
    		$(A).insertBefore(B)// 把A放到B的前面
    	
    	
    	5. 移除和清空元素
    	
    		remove()// 从DOM中删除所有匹配的元素。
    		empty()// 删除匹配的元素集合中所有的子节点。
    	
    	
    	6. 替换
    	
    		replaceWith()
    		replaceAll()
    	
    	
    	7. 克隆
    
    		clone()// 参数
    		
    		默认不克隆事件,除非在括号中添加True。
    

    四、jQuery事件

    1. 常用事件
    
    	click(function(){...})
    	hover(function(){...})
    	blur(function(){...})
    	focus(function(){...})
    	change(function(){...})
    	keyup(function(){...})
    
    
    2. jQuery绑定事件的语法
    
    	1. 方式一
    	
    		$(选择器).事件名(
    			function() {
    		        // 事件代码
    		})
    	
    	
    	2. 方式二
    
    		$(选择器).on('事件名',function() {
    		        // 事件代码
    		})
    	
    
    	P.S
    	
    		JS
    		
    		XXXEle.on+事件名 = function() {
    		        // 事件代码
    		}
    	
    
    3. 移除事件
    
    	$(选择器).off('事件名',function() {
    	        // 事件代码
    	})
    
    
    4. 阻止后续事件
    
    	1. 方式一
    		
    		事件代码后加上return false
    		
    	2. 方式二
    	
    		事件代码后加上e.preventDefault();
    		
    
    5. 事件冒泡
    
    	1. 定义
    	
    		子标签事件触发后,会继续触发父标签事件
    	
    	2. 控制事件冒泡
    	
    		e.stopPropagation
    	
    		<!DOCTYPE html>
    		<html lang="en">
    		<head>
    		    <meta charset="UTF-8">
    		    <title>阻止事件冒泡</title>
    		</head>
    		<body>
    		<div>
    		    <p>
    		        <span>点我</span>
    		    </p>
    		</div>
    		<script src="jquery-3.3.1.min.js"></script>
    		<script>
    		    $("span").click(function (e) {
    		        alert("span");
    		        e.stopPropagation();
    		    });
    		
    		    $("p").click(function () {
    		        alert("p");
    		    });
    		    $("div").click(function () {
    		        alert("div");
    		    })
    		</script>
    		</body>
    		</html>
    	
    	
    6. 事件委托
    
    	1. 定义
    	
    		将特定的事件,委托给标签内部指定的元素(标签既可以是提前写的,也可以是后期动态创建的)
    	
    	2. 示例
    	
    		只要是body内的button按钮,都具有alert事件
    	
    		$('body').on('click', 'button', function() {
    		        alert(123)
    		})
    
    
    
    7. 示例
    
    	1. hover事件示例
    	
    		<!DOCTYPE html>
    		<html lang="en">
    		<head>
    		    <meta charset="UTF-8">
    		    <title>Title</title>
    		</head>
    		<body>
    		<p>苍茫的天涯是我的哎,绵绵的青山脚下一片海!</p>
    		
    		<script src="jQuery-3.3.1.js">
    		</script>
    		<script>
    		    $('p').hover(
    		        function () {
    		            alert('来啦,老弟')
    		        },
    		        function () {
    		            alert('慢走哦~')
    		        }
    		    )
    		</script>
    		</body>
    		</html>
    	
    	
    	2. 实时监听input输入值变化示例
    	
    		<!DOCTYPE html>
    		<html lang="en">
    		<head>
    		  <meta charset="UTF-8">
    		  <meta http-equiv="x-ua-compatible" content="IE=edge">
    		  <meta name="viewport" content="width=device-width, initial-scale=1">
    		  <title>实时监听input输入值变化</title>
    		</head>
    		<body>
    		<input type="text" id="i1">
    		
    		<script src="jquery-3.2.1.min.js"></script>
    		<script>
    		  /*
    		  * oninput是HTML5的标准事件
    		  * 能够检测textarea,input:text,input:password和input:search这几个元素的内容变化,
    		  * 在内容修改后立即被触发,不像onchange事件需要失去焦点才触发
    		  * oninput事件在IE9以下版本不支持,需要使用IE特有的onpropertychange事件替代
    		  * 使用jQuery库的话直接使用on同时绑定这两个事件即可。
    		  * */
    		  $("#i1").on("input propertychange", function () {
    		    alert($(this).val());
    		  })
    		</script>
    		</body>
    		</html>
    

    五、jQuery动画效果

    1. 展示与隐藏
    
    	1. 5秒展开图片到原本大小
    	
    		$('div').show(5000)
    	
    	2. 5秒缩小图片
    	
    		$('div').hide(5000)
    
    
    2. 滑动
    
    	1. 3秒向上卷起图片
    	
    		$('div').slideUp(3000)
    	
    	2. 3秒向下展开图片
    	
    		$('div').slideDown(3000)
    	
    
    
    3. 淡入淡出
    	
    	1. 4秒图片淡出
    	
    		$('div').fadeout(4000)
    	
    	2. 4秒图片淡入
    	
    		$('div').fadein(4000)
    	
    	3. 4秒图片淡出到透明度为0.4
    	
    		$('div').fadeto(4000, 0.4)
    	
    
    4. 示例:点赞效果
    
    	<!DOCTYPE html>
    	<html lang="zh-CN">
    	<head>
    	  <meta charset="UTF-8">
    	  <meta http-equiv="x-ua-compatible" content="IE=edge">
    	  <meta name="viewport" content="width=device-width, initial-scale=1">
    	  <title>点赞动画示例</title>
    	  <style>
    	    div {
    	      position: relative;
    	      display: inline-block;
    	    }
    	    div>i {
    	      display: inline-block;
    	      color: red;
    	      position: absolute;
    	      right: -16px;
    	      top: -5px;
    	      opacity: 1;
    	    }
    	  </style>
    	</head>
    	<body>
    	
    	<div id="d1">点赞</div>
    	<script src="jquery-3.2.1.min.js"></script>
    	<script>
    	  $("#d1").on("click", function () {
    	    var newI = document.createElement("i");
    	    newI.innerText = "+1";
    	    $(this).append(newI);
    	    $(this).children("i").animate({
    	      opacity: 0
    	    }, 1000)
    	  })
    	</script>
    	</body>
    	</html>
    

    六、jQuery补充知识点

    1. each
    
    	1. 作用
    	
    		遍历一个jQuery对象,为每个匹配元素执行一个函数,常用来代替for循环。
    	
    	2. 用法一
    	
    		创建3个p标签,内部1到3
    		
    		$.each($('p'), function(index, obj) {
    		        console.log(index, obj, this)
    		})
    		
    		输出
    		
    		0    <p>1</p>    <p>1</p>
    		1    <p>2</p>    <p>2</p>
    		2    <p>3</p>    <p>3</p>
    	
    	
    	3. 用法二
    	
    		$('p').each(function(index, obj) {
    			console.log(index, obj)
    		})
    		        
    		输出
    		        
    		0    <p>1</p>    <p>1</p>
    		1    <p>2</p>    <p>2</p>
    		2    <p>3</p>    <p>3</p>
    	
    	
    	4. 终止循环
    	
    		return false;
    
    
    2. .data()
    
    	1. 作用
    	
    		在标签存储信息,并无法在前端查看到。取值时,键不存在也不会报错
    	
    	2. 存值
    	
    		$('p').data('username', 'byx')
    	
    	3. 取值
    	
    		$('p').first().data('username')
    	
    	4. 删除值
    	
    		$('p').removeData('username')
  • 相关阅读:
    一道看似简单的sql需求却难倒各路高手
    手把手教你Linux服务器集群部署.net网站
    最简单的 Web Service 入门 (看了包会)
    360wifi 在 windows server 2008 / 2003 的使用方法
    react 入门
    bind、call、apply的区别
    webkit css 扩展
    如何构建一个微型的CMD模块化加载器
    Base64的原理、实现及应用
    You don't know JS 读书笔记(一)
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11968544.html
Copyright © 2020-2023  润新知