• jQuery 基础


    jQuery

    大多数函数支持链式操作 一个主语执行完一个函数后 这个函数又返回该主语 可以继续用点接着执行其它函数
    

    查找

                1.按选择器
    				$(...)支持所有css选择器
    				css中没有的,jQuery添加的
    					基本过滤:先将所有元素收集到一个结果集合中统一编号,再选择集合中指定位置的元素,和元素在其父元素下的位置无关
    						first-child vs first
    					内容过滤:3种
    						1.按包含的文本内容过滤
    							:contains(text) 查找内容中包含指定text文本的元素
    						2.按子元素特征过滤
    							:has(selector) 查找内容中包含符合selector要求的子元素的父元素
    						3.按是否包含内容过滤
    							:empty 空元素
    							:parent 非空的元素
    					可见性过滤:
    						:hidden 只能选中两种情况的隐藏
    							1.display: none
    							2.input type=hidden
    						:visible
    					状态过滤:三大状态 :disabled :checked :selected
    					表单元素过滤:
    						:input 可以选择四大类表单元素 input、button、textarea、selected
    						:[type] 每种input都对应一种专门的选择器
    							:text :password :checkbox :radio
    
    			2.按节点间关系
    				父元素 .parentNode => .parent()
    				直接子元素 .children => .children()
                        查找父元素下符合条件的子元素:
    						.children(['selector']) 只能找直接子元素
    						.find('selector') 在所有后代中查找
    				第一个子元素 .firstElementChild => .children().first()
    				最后一个子元素 .lastElementChild => .children().last()
    				前一个兄弟 .previousElementSibling => .prev()
    												   .prevAll()
    				后一个兄弟 .nextElementSibling => .next()
    											     .nextAll()
    				除我之外,所有兄弟 .siblings([selector])
    

    修改:一个函数两用(get、set)

                内容
    				.innerHTML   => .html()
    				.textContent => .text()
    				.value       => .val()
    			属性
                    标准属性
    					elem.属性名 => $elem.attr('属性名'[,值])
    				状态属性
    					elem.属性名 => $elem.prop('状态属性'[,bool])
    				自定义扩展属性
    					elem.dataset.属性名 => $elem.data('属性名'[,值])
    			样式
    				修改内联样式
    				1.仅修改一个css属性
    					.style.css属性=值 => .css('css 属性名'[,值])
    				2.批量修改多个css属性
    					.css({
    						'css 属性名': 值,
    						...: ...
    					})
    

    批量修改

            用class批量修改样式
    				1.为元素追加一个class
    					$(...).addClass('class 名')
    				2.为元素移除一个class
    					$(...).removeClass('class 名')
    				3.判断是否包含一个class
    					$(...).hasClass('class 名')
    				4.为元素切换一个class
    					$(...).toggleClass('class 名')
    				补充:
    					.index()
    					1.let i = $('selector').index(jq 对象/DOM 对象);
    						查找右边的jq对象或者DOM对象在左边的集合中的下标位置
    					2.如果在同一个父元素下找某个子元素的位置
    						let i = $(child).index();
    

    添加

                1.用$()创建一个新元素:let $新元素 = $('html 片段')
    			2.将新元素添加到dom树:
    				$('parent').append($新元素);
    					       .prepend($新元素);
    
    				$('child').before($新元素);
    						  .after($新元素);
    				可以更简化:$('parent').append/prepend('html片段');
    							$('child').before/after('html片段');
    

    删除/替换/克隆

            删除:
    			$(...).remove();
    
    		替换:
    			$('selector').replaceWith(jq 对象|DOM 对象);
    		
    		克隆:
    			let $cloneElem = $('selector').clone();
    			强调:浅克隆:仅克隆样式和属性,不克隆行为,clone()
    				  深克隆:既克隆样式和属性,又克隆行为,clone(true)
    

    事件绑定

            jQuery中共有几种事件绑定方式?区别
    			DOM:.addEventListener('事件名', handler)
    				.removeEventListener(...)
    			jq:
    				1.$(target).bind/unbind(),同.addEventListener('事件名', handler)
    					.unbind()三种重载:
    						.unbind('事件名', handler)移除当前元素上,指定事件上的名为handler的处理函数
    						.unbind('事件名')移除当前元素上,指定事件上的所有处理函数
    						.unbind()移除当前元素上,所有事件的监听
    				2.$(target).one('事件名', handler)同bind
    					区别:只触发一次,触发后自动解绑
    				3.live/die('事件名', handler)--已废弃
    					原理:将所有事件集中绑定在顶级document上
    				4.$(parent).delegate('selector', '事件名', handler)	
    					原理:简化利用冒泡
    					1.获得目标元素:this->e.target
    					2.筛选目标元素:第一个参数 selector
    						只有满足selector要求的元素才能触发事件
    					bind vs delegate
    					1.bind直接绑定在目标元素上
    					  delegate绑定在父元素上
    					2.监听个数
    						bind:监听个数多--每个目标元素都添加
    						delegate:监听个数少--只给父元素添加
    					3.新增子元素自动获得事件处理函数
    						.bind只能对现有元素添加事件监听
    							 新增元素无法自动获得监听
    						.delegate
    							只要父元素下的元素,无论是现有,还是新增,都能自动获得父元素上统一的事件监听
    				5.on/off
    					1.代替bind,on('事件名', handler),同bind
    					2.代替delegate,on('事件名', 'selector', handler),同delegate
    				6.事件名
    					强调:仅对常用的事件提供了终极简化
    

    页面加载后执行:2种

                1.DOMContentLoaded:仅DOM内容加载完,就可提前执行
    				DOM内容仅包括html,js
    				提前触发
    				何时:只要不依赖与css和图片的所有操作都可在DOM内容加载后,提前触发
    					  比如:事件绑定
    				jq:
    					$(document).ready(function(){
    						// DOM内容加载后,就可执行的操作
    						// 比如:事件绑定
    					});
    					简化:$(()=>{...})
    			2.window.onload()在所有页面内容加载完成后自动触发
    				包括:html,css,js,图片
    				何时:如果js代码必须依赖css或图片才能执行时
    

    模拟触发:

            虽然没有触发事件,但是依然可用程序模拟执行元素的事件处理函数
    			$(...).trigger('事件名');
    
  • 相关阅读:
    测试工作中需要用到的一些linux命令
    软件的性能测试到底是测试哪些方面
    软件测试中的安全测试包括哪些方面
    git一不小心上传了大文件,怎么破?
    接口测试校验返回数据格式,JasonSchema使用详解
    selenium定位中需要鼠标悬浮才能显示的按钮
    jenknis参数化构建,windows和shell引用变量
    selenium元素定位之父子节点、胞节点
    selenium元素定位之多个元素中选择其中的一个
    Python实现注册和三次验证登录
  • 原文地址:https://www.cnblogs.com/debug/p/11409786.html
Copyright © 2020-2023  润新知