优点
- 强大的选择器机制
- 优质的隐私迭代
- 链式编程
选择机制
选择器
- 标签名
$(\’div\’) 
- id
$(\’#id\’) 
- class
$(\’.clname\’) 
- 属性
$(\’div:[name=\’66\’]\’) 
- 后代第一个
$(\’ul>li:first\’) 
- 后代最后一个
$(\’ul>li:last\’) 
- css结构为类
$(\’ul>li:nth-child(2)\’) 
- css 结构为类奇数
$(ul>li:nth-child(odd)) 
- 索引
$(\’ul>li\’).eq(2) 
- 偶数
$(\’ul>li:even\’) 
筛选器
| 名称 | 写法 | 
|---|---|
| 第一个 | $(\’ul>li\’).first() | 
| 最后一个 | $(\’ul>li\’).last() | 
| 下标索引 | $(\’ul>li\’).eq(num) | 
| 上一个兄弟 | $(\’ul>li\’).eq(num).prev() | 
| 下一个兄弟 | $(\’ul>li\’).eq(num).next() | 
| 之前所有 | $(\’ul>li\’).eq(num).prevAll() | 
| 之后所有 | $(\’ul>li\’).eq(num).nextAll() | 
| 所有兄弟 | $(\’ul>li\’).silnlings() | 
| 父级 | $(\’ul>li\’).parent() | 
| 所有父级 | $(\’ul>li\’).parents() | 
| 当前索引下标 | $(\’ul>li\’).eq(2).index() | 
| 查看符合条件的标签 | $(\’ul>li\’).find(\’条件\’) | 
操作
属性操作
- bool类型: prop()
- 其他类型: attr()
| 操作 | prop | attr | 
|---|---|---|
| 删除 | dom.removeProp(\’属性\’) | dom.removeAttr(\’属性\’) | 
| 获取 | dom.prop(\’属性\’) | dom.attr(\’属性\’) | 
| 添加 | dom.prop(\’属性\’,\’值\’) | dom.attr(\’属性\’,\’值\’) | 
class操作
- 新增
dom.addClass(\’name\’) 
- 删除
dom.removeClass(\’name\’) 
- 切换(有或没有)
dom.toggleClass(\’name\’) 
- 是否存在
dom.hasClass(\’name\’) 
css操作
- 获取 dom.css(\’属性\’)
- 设置 dom.css(\’属性\’,\’值\’)
- 设置 dom.css({属性:值, 属性:值})
标签插入内容操作
- dom.html()
- dom.text()
事件
事件绑定与删除
- 
相关代码 dom.on(类型,函数) dom.on(类型,数据,函数) dom.off(类型,函数) — 删除 dom.on(\’click\’, {name:"张三",age:18}, e=>) 
委托
dom.on(类型,委托对象,函数)
dom.on(\’click\’, \’span\’, e=>)
特殊事件绑定
- dom.click(函数)
- dom.hover(函数,函数)移入移除效果
- dom.one(函数)触发一次
- dom.trigger(事件名称)立即触发一次
- $(window).ready()
- DOM加载完成后
 
- 等待dom树加载完即可
- 可以执行有多次
循环
dom.each((k,v)=>)
节点操作
获取元素站位
| 名称 | 写法 | 
|---|---|
| 内容宽/高 | dom.width() / dom.height() | 
| 内容+padding | dom.innerWidth() / dom.innerHeight() | 
| 内容+padding+border | dom.outerWidth() / dom.outerHeight() | 
| 内容+padding+margin | dom.outerWidth(true) / dom.outerHeight(true) | 
获取元素坐标
- 距离窗口
dom.offset()dom.offset({left:0px,top:0px}) 
- 距离父物体
dom.position() 
浏览器滚动
$(window).scrollTop()
$(window).scrollLeft()
节点操作
- 
创建 $(\’内容\’) 
- 
写入 父级最后 fdom.append(dom) dom.appendTo(fdom) 
- 
父级起始 fdom.prepend(dom) dom.prependTo(fdom) 
- 
标签之后 dom.after(ndom) ndom.insertAfter(dom) 
- 
标签之前 dom.before(ndom) ndom.insertBefore(dom) 
- 
节点/标签替换 dom.replaceWith(ndom) ndom.replaceAll(dom) 
- 
删除 dom.empty dom.remove() 
- 
克隆 dom.clone() - 参数1:默认false     子集事件默认也会克隆
 
- 参数2:默认true
- 参数1:true 参数2:false 只克隆本身不可隆子元素事件
阻止默认行为
- 冒泡: stoppropagation()
- 捕获: preventDefult()
- 所有: return false
动画
标准动画
- 消失
dom.hide(时间, 方式, 函数) 
- 显示
dom.show(时间, 方式, 函数) 
- 切换
dom.toggle(时间, 方式, 函数) 
// 给切换按钮,添加事件$(\'[name="toggle"]\').click(function(){$(\'div\').toggle( 2000 , \'linear\' , function(){console.log(\'div完全切换了\');} )})
折叠动画
- 消失
dom.slideUp() 
- 显示
dom.slideDown() 
- 切换
dom.slideToggle() 
渐隐渐现
- 消失
dom.fadeOut() 
- 显示
dom.fadeIn() 
- 切换
dom.fadeToggle() 
自定义动画
dom.animate({属性;值, …}, 时间, 方式, 函数)
动画结束
- 从当前运动为止
dom.stop() 
- 从上个一个运动结束
dom.finish() 
扩展
ajax请求
$.ajax({//请求方式type : "POST",//请求的媒体类型contentType: "application/json;charset=UTF-8",//请求地址url : "http://127.0.0.1/admin/list/",//数据,json字符串data : JSON.stringify(list),//请求成功success : function(result) {console.log(result);},//请求失败,包含具体的错误信息error : function(e){console.log(e.status);console.log(e.responseText);}});
深浅拷贝
- 浅拷贝:拷贝复制引用类型的内存地址
- 深拷贝:拷贝复制,引用类型的数据,两个变量之间没有相互联系
$.extend(参数1, 参数2, 参数3) - 参数1:true    深拷贝
 
- false 浅拷贝
ajax全局钩子函数
- 作用:监听函数执行,当执行到某个状态,执行钩子函数对应的程序
- ajax的基本步骤:
- 声明定义一个ajax对象
 
- 定义 open()
- 定义 send()
- 接收响应体内容
- 写法
- $(window).ajaxStart()阶段:ajax开始前
 
- 次数:有多个ajax,也只触发一次
- 注意:如果一个作用域下,有多个人ajax,只会在第一个 ajax 请求之前触发
- 阶段:ajax发送前
- 阶段:ajax请求成功
- 阶段:ajax失败
- 阶段:ajax请求完成
- 阶段:ajax所有请求完成
// 在请求,开始时会触发// 多个请求,只会触发一次$(window).ajaxStart(()=>{console.log(\'第一个请求就要开始了\');})// 在发送请求时会触发// 多个请求,会触发多次$(window).ajaxSend( function(){console.log(\'发送了一个请求\');} )// 在请求成功时,会触发// 多个请求成功,会触发多次$(window).ajaxSuccess(()=>{console.log(\'有一个请求成功了\')})// 在请求失败时,会触发// 多个请求成功,会触发多次$(window).ajaxError(()=>{console.log(\'有一个失败成功了\')})// 在请求结束时,会触发// 多个请求结束,会触发多次$(window).ajaxComplete(()=>{console.log(\'有一个请求结束了\')})// 在所有请求结束时,会触发// 只会触发一次$(window).ajaxStop(()=>{console.log(\'所有请求都结束了\')})
多库并存
- 
问题 - 当其他封装的插件或框架	操作方法与jQuery操作方法发生冲突
 
- 使用的也是 $/jQuery 语法来调用
- 操作语法就会发生冲突,需要调用jquery的调用方法
- 
写法 - $.noconflict()			$符号不能用
 
- $.noconflict(true) $ 和 jQuery都不能用
let abc = $.noconflict(true)
abc(‘div’).css(color,red)
 爱站程序员基地
爱站程序员基地


