//百度CDN
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。
jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。
jQuery 代码在文档在完全加载(就绪)之后运行(即:入口函数)
$(document).ready(function(){
// 开始写 jQuery 代码...
});
$(function(){
// 开始写 jQuery 代码...
});
jQuery 选择器基于已经存在的CSS 选择器,除此之外,它还有一些自定义的选择器。
项目中使用jQuery函数最好单独放在一个.js中,使用src引入。
jQuery对象和DOM对象(原生JS获取到的)的相互转换:
jQuery转换为DOM对象
$(dom对象)[index]
$(dom对象).get(index)
DOM对象转换为jQuery对象
//直接取的,或者是包装已获取的DOM对象
$(DOM对象)
在 jQuery 中,大多数 DOM 事件都有一个等效的 jQuery 方法。两者不能混用
focus一般和blur搭配使用。(需要还原focus前面的样式)
🚩隐式迭代:遍历内部DOM元素(伪数组形式存储)的过程
一些比较特别的选择器实例
| $(“ul li:first”) | 选取第一个
|
|---|---|
| $(“ul li:first-child”) | 选取每个
|
| $(“[href]”) | 选取带有 href 属性的元素 |
| $(“:button”) | 选取所有 type=“button” 的 元素 和 元素 |
| $(“tr:even”) | 选取偶数位置的 |


jQuery的排他思想
得到当前元素的索引号的方法: ⚠️是个方法!所以index**()** ⚠️
$(this).index**()**
样式操作
操作css方法*(其实也不太方便)*
1.参数只有属性名时,返回属性值;(此时是 查询)
2.参数是属性名,属性值,逗号分隔,表示设置一组样式。属性要带引号,属性值是数字时可以不带单位和引号。
🚩设置类样式方法
hover([over,]out)
over:相当于mouseenter;out:相当于mouseleave
① 只要鼠标指针移入(或移出)事件所绑定的元素或其子元素,都会触发mouseover(或mouseout)事件
② 只有鼠标指针移入(或移出)事件所绑定的元素时,才会触发mouseenter(或mouseleave)事件。
🚩常常配合 xxToggle() 使用,更更优雅简单了
⚠️ 动画或者效果的队列问题:一旦触发就会执行,多次触发造成问题。
//停止排队,写在动画或效果的前面!
stop()
主要是遍历、创建、添加、删除元素操作
遍历(etc : 给同一类元素做不同操作)
//语法1:
$().each(function(index,domEle){xxx;})
//语法2:
$.each(object(),function(index,ele){xxx;})
创建:$(“标签”)
添加
删除
1.element.remove() //删除匹配的元素(本身)
2.element.empty() //删除匹配的元素集合中所有的子节点
3.element.html("") //清空匹配的元素内容
尺寸
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRlthAYq-1667617359409)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/752d1aff-2bed-4e52-b22c-98578eec95de/Untitled.png)]
位置
offset():设置/获取元素相对于文档的偏移坐标
position(): ⚠️获取元素相对于带有定位的parents()的偏移坐标
scrollTop()/scrollLeft():设置/获取元素被卷去的头部/左侧
//获取文档此时被卷去的头部
$(window).scroll(function(){
$(document).scrollTop()
})
🍐带动画效果的返回顶部 ⚠️ 不是文档而是html和body元素做动画
$(”body,html”).animate({scrollTop:0})
on()方法可以在匹配元素上绑定一个或多个事件的事件处理函数
events:多对多时用对象形式,一般是 “ 事件名 ” ;selector:元素的子元素选择器/触发元素;fn:回调函数
element.on(events,[selector],fn)
同一事件处理程序,绑定给多个events时,多个events用空格隔开就可以了
优势:
应用:
可以移除通过on()方法添加的事件处理程序
语法:
$("p").off() //解绑指定元素的**所有事件**处理程序
$("p").off("click") //解绑指定元素的**指定**事件处理程序
$("ul").off("click","li") //解绑**事件委托**
语法:
//先有一个事件xxx
1.element.xxx() //简写
2.element.trigger("xxx")
3.element.triggerHandler("xxx")
//**不会触发元素的默认行为(比如input聚焦时的光标)**
使用场景:轮播图自动切换
$.extend() 可以把某个对象拷贝(合并)给另外一个对象使用
语法:
$.extend([deep],target,object1,[objectN])
deep:设置为true时,深拷贝;默认为false,浅拷贝
复杂数据类型有自己另外的存储空间
target:要拷贝的目标对象
object1:待拷贝的对象。
day2
style里中选择对应类的时候,一个空格就表示下一级了。 ⚠️不要多打或者少打/或者打错
li.current 而不是 li .current //两者大不同!
为什么不用 添加/删除类来实现呢?因为效果太直白了,有点丑 🤪 虽然代码很简洁
❓快速切换时,会出现其他li的透明度改变的问题。测试起来好像是因为用了多个stop()的缘故。咋么优化还不知道。
day3
全选/选中功能:
选中类的时候,经常会漏打“ . ” 😩
$里可以一次性操作多个类。如果动作是完全一样的。⚠️用 逗号 隔开⚠️
$(".j-checkbox,.checkall")
有时候,可以用change()代替click()
打印console.log,也要注意,是要跟在某个操作里。直接打印$变量也ok的。
小复选框控制全选框时,因为结果只有2种,所以赋值时给 true、false 就可以了。不用跟着小复选框的结果来 🤨
.length 还是蛮常用的(统计某个元素的个数/某个元素某种属性的个数etc)
增减商品数量功能:
⚠️± 控制的是当前商品的数量。所以会用到siblings(),不然就会影响其他商品了。
不满足条件(数量不能<1)时:
return false;
返回,不执行。
用户输入:只能为正整数。可以在html页面限制一下。
更改商品的价格小计功能
删除商品功能
给选中商品添加背景效果
day4
一些样式
textarea{
outline: none; //去掉鼠标聚焦时文本框加粗效果
resize: none; //设置不能通过鼠标随意改变文本域的宽高
}
因为发布是动态的,而且on()可以实现事件派发,所以操作主要使用on事件进行。
在li上添加内容,以下2种方法的结果一样
⚠️:添加的内容,是dom元素!
var cont = $(".txt").val()
var del = "删除"
li.append(cont + del)
li.html(cont + del)
实现滑动出现效果:
实现滑动删除效果:
应用场景:评论区,留言板。
可优化的点:etc 无法输入空字符串、字符串字数限制、超出显示范围后折叠/打开
day5
原文写于Notion / 部分有参考菜鸟教程