jQuery知识点全解析
发表时间: 2021-02-19 08:36
1. 了解jQuery * 是什么: What? * 一个JS函数库: write less, do more * 封装简化DOM操作(CRUD) / Ajax * 为什么用它: why? * 强大选择器: 方便快速查找DOM元素 * 隐式遍历(迭代): 一次操作多个元素 * 读写合一: 读数据/写数据用的是一个函数 * 链式调用: 可以通过.不断调用jQuery对象的方法 * 事件处理 * DOM操作(CUD) * 样式操作 * 动画 * 浏览器兼容 * 如何使用: How? * 引入jQuery库 * 本地引入与CDN远程引入 * 测试版与生产版(压缩版) * 使用jQuery * 使用jQuery函数: $/jQuery * 使用jQuery对象: $xxx(执行$()得到的)2. jQuery的2把利器 * jQuery函数: $/jQuery * jQuery向外暴露的就是jQuery函数, 可以直接使用 * 当成一般函数使用人: $(param) * param是function: 相当于window.onload = function(文档加载完成的监听) * param是选择器字符串: 查找所有匹配的DOM元素, 返回包含所有DOM元素的jQuery对象 * param是DOM元素: 将DOM元素对象包装为jQuery对象返回 $(this) * param是标签字符串: 创建标签DOM元素对象并包装为jQuery对象返回 * 当成对象使用: $.xxx * each(obj/arr, function(key, value){}) * trim(str) * jQuery对象 * 包含所有匹配的n个DOM元素的伪数组对象 * 执行$()返回的就是jQuery对象 * 基本行为: * length/size(): 得到dom元素的个数 * [index]: 得到指定下标对应的dom元素 * each(function(index, domEle){}): 遍历所有dom元素 * index(): 得到当前dom元素在所有兄弟中的下标3. 选择器 * 是什么? * 有特定语法规则(css选择器)的字符串 * 用来查找某个/些DOM元素: $(selector) * 分类 * 基本 * #id * tagName/* * .class * selector1,selector2,selector3: 并集 * selector1selector2selector3: 交集 * 层次 * 找子孙后代, 兄弟元素 * selector1>selector2: 子元素 * selector1 selector2: 后代元素 * 过滤 * 在原有匹配元素中筛选出其中一些 * :first * :last * :eq(index) * :lt * :gt * :odd * :even * :not(selector) * :hidden * :visible * [attrName] * [attrName=value] * 表单 * :input * :text * :checkbox * :radio * :checked: 选中的4. 属性/文本 * 操作标签的属性, 标签体文本 * attr(name) / attr(name, value): 读写非布尔值的标签属性 * prop(name) / prop(name, value): 读写布尔值的标签属性 * removeAttr(name)/removeProp(name): 删除属性 * addClass(classValue): 添加class * removeClass(classValue): 移除指定class * val() / val(value): 读写标签的value * html() / html(htmlString): 读写标签体文本 1. CSS模块 * style样式 * css(styleName): 根据样式名得到对应的值 * css(styleName, value): 设置一个样式 * css({多个样式对}): 设置多个样式 * 位置坐标 * offset(): 读/写当前元素坐标(原点是页面左上角) * position(): 读当前元素坐标(原点是父元素左上角) * scrollTop()/scrollLeft(): 读/写元素/页面的滚动条坐标 * 尺寸 * width()/height(): width/height * innerWidth()/innerHeight(): width + padding * outerWidth()/outerHeight(): width + padding + border2. 筛选模块 * 过滤 * 在jQuery对象内部的元素中找出部分匹配的元素, 并封装成新的jQuery对象返回 * first() * last() * eq(index) * filter(selector): 对当前元素提要求 * not(selector): 对当前元素提要求, 并取反 * has(selector): 对子孙元素提要求 * 查找 * 查找jQuery对象内部的元素的子孙/兄弟/父母元素, 并封装成新的jQuery对象返回 * children(selector): 子元素 * find(selector): 后代元素 * preAll(selector): 前的所有兄弟 * siblings(selector): 所有兄弟 * parent(): 父元素3. 文档处理(CUD)模块 * 增加 * append() / appendTo(): 插入后部 * preppend() / preppendTo(): 插入前部 * before(): 插到前面 * after(): 插到后面 * 删除 * remove(): 将自己及内部的孩子都删除 * empty(): 掏空(自己还在) * 更新 * replaceWith() 4. 事件模块 * 绑定事件 * eventName(function(){}) * on('eventName', function(){}) * 常用: click, mouseenter/mouseleave mouseover/mouseout focus/blur * hover(function(){}, function(){}) * 解绑事件 * off('eventName') * 事件委托 * 理解: 将子元素的事件委托给父辈元素处理 * 事件监听绑定在父元素上, 但事件发生在子元素上 * 事件会冒泡到父元素 * 但最终调用的事件回调函数的是子元素: event.target * 好处 * 新增的元素没有事件监听 * 减少监听的数量(n==>1) * 编码 * delegate(selector, 'eventName', function(event){}) // 回调函数中的this是子元素 * undelegate('eventName') * 事件坐标 * event.offsetX: 原点是当前元素左上角 * event.clientX: 原点是窗口左上角 * event.pageX: 原点是页面左上角 * 事件相关 * 停止事件冒泡: event.stopPropagation() * 阻止事件的默认行为: event.preventDefault() * 动画效果 * 在一定的时间内, 不断改变元素样式 * slideDown()/slideUp()/slideToggle() * fadeOut()/fadeIn()/fadeToggle() * show()/hide()/toggle() * animate({结束时的样式}, time, fun) * stop()* 插件机制 * 扩展jQuery函数对象的方法 $.extend({ xxx: fuction () {} // this是$ }) $.xxx() * 扩展jQuery对象的方法 $.fn.extend({ xxx: function(){} // this是jQuery对象 }) $obj.xxx() * jQuery文档的结构图