Skip to content

jQuery

jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。

截止本文档最后更新的时间,jQuery 已经发布了第一个测试版本,最新的正式版为 3.7.4。

使用 jQuery 前,需要先引入 jQuery。可以前往 官网 下载最新版,也可以引用本站 jQuery 的地址。

html
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- 或者 -->
<script src="https://static.qi1.website/js/jquery.js"></script>

使用 - 选择器

jQuery 支持所有 document.querySelector 的选择器类型。

jQuery 的使用语法为 $("选择器").方法(参数)

名称用法描述
ID选择器$("#id");获取指定 ID 的元素
类选择器$(".class");获取同一类 class 的元素
标签选择器$(“div”);获取同一类标签的所有元素
并集选择器$(“div,li,p”);使用逗号分隔,获取多个元素
交集选择器$(“div.show”);获取 class 为 show 的 div 元素
全选选择器$("*");匹配所有元素
子代选择器$(“ul>li”);使用 > 号,获取儿子层级的元素;注意,并不会获取孙子层级的元素
后代选择器$(“ul li”);使用空格,代表后代选择器,获取 ul 下的所有 li 元素,包括孙子等
:eq(index)$(“li:eq(1)”);获取到的li元素中,选择索引号为1的元素,索引号index从0开始。
:odd$(“li:odd”);获取到的li元素中,选择索引号为奇数的元素
:even$(“li:even”);获取到的li元素中,选择索引号为偶数的元素
parent()$(".first").parent();查找父亲
children(selector)$(“ul”).children(“li”)相当于$(“ul>li”),子类选择器
find(selector)$(“ul”).find(“li”);相当于$(“ul li”),后代选择器
siblings(selector)$(".first").siblings(“li”);查找兄弟节点,不包括自己本身。
next()$(".first").next();查找当前元素之后的下一个兄弟
nextAll()$(".first").nextAll();查找当前元素之后的所有同辈元素
prev()$(".last").prev();查找当前元素之前的上一个兄弟
prevAll()$(“last”).prevAll();查找当前元素之前的所有同辈元素
hasClass(class)$(“div”).hasClass(“show”)检查当前的元素是否含有某个特定的类,如果有,则返回 true
eq(index)$(“li”).eq(2);相当于$(“li:eq(2)”),index 从0开始

jQuery 不需要显式使用 forEach 语法,若选择器匹配多个元素,jQuery 会自动为每个元素执行相同的操作。

javascript
$("div").css("background", "pink");
$("ul li").css("color", "red");

使用 - 修改样式

jQuery 可以使用 css 方法来修改简单元素样式;也可以操作类,修改多个样式。

  • 参数只写属性名,则是返回属性值
javascript
$(this).css("color");
  • 参数是属性名属性值,中间由逗号分隔,是一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
javascript
$(this).css("color","red");
  • 参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开,属性可以不用加引号
javascript
$(this).css({"color":"red","font-size":"20px"});

jQuery 也可以设定元素的类名,作用等同于以前的 classList,可以操作类样式。

  • 添加类
javascript
$("div").addClass("current");
  • 移除类
javascript
$("div").removeClass("current");
  • 切换类
javascript
$("div").toggleClass("current");

使用 - 显示与隐藏元素

显示使用 show 方法,语法为:

javascript
show([speed, [easing], [fn]])
  • 参数都可以省略,省略后没有动画,直接显示。
  • speed:三种预定速度之一的字符串 (“slow”,“normal”,“fast”) 或表示动画时长的毫秒数值 (如:1000)。
  • easing:用来指定切换效果,默认是 "swing",可用参数 "linear"。
  • fn:在动画完成时执行的函数,每个元素执行一次。

隐藏使用 hide 方法,语法为:

javascript
hide([speed, [easing], [fn]])
  • 参数都可以省略,省略后没有动画,直接隐藏。
  • speed:三种预定速度之一的字符串 (“slow”,“normal”,“fast”) 或表示动画时长的毫秒数值 (如:1000)。
  • easing:用来指定切换效果,默认是 "swing",可用参数 "linear"。
  • fn:在动画完成时执行的函数,每个元素执行一次。

上述方法都是直接作用于元素的 display 属性,会直接让元素消失或隐藏,还可以让元素伴随动画地消失,这里介绍两个最常用的,淡入和淡出。

淡入效果,语法:

javascript
fadeIn([speed], [easing], [fn])

淡出效果,语法:

javascript
fadeOut([speed],[easing],[fn])

除此之外,还可以自定义动画:

javascript
animate(params, [speed], [easing], [fn])

这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性(如 “height”、“top” 或 “opacity” )。注意:所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left。而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值,样式属性就会从当前的值渐变到指定的值。如果使用的是“hide”、“show”或“toggle”这样的字符串值,则会为该属性调用默认的动画形式。

  • params:一组包含作为动画属性和终值的样式属性和及其值的集合(用对象实现),必须写
  • speed:三种预定速度之一的字符串 (“slow”,“normal”, or “fast”) 或表示动画时长的毫秒数值 (如:1000)。
  • easing:用来指定切换效果,默认是 "swing",可用参数 "linear"。
  • fn:在动画完成时执行的函数,每个元素执行一次。

使用 - 属性

获取属性:

javascript
prop("属性")

设置属性:

javascript
prop("属性", "属性值")

上述语法可以设置元素的固有属性,下面的 attr 方法则可以操作自定义属性。

自定义属性就是用户自己给元素添加的属性。比如给li添加index="1"

获取属性:

javascript
attr("属性")

设置属性:

javascript
attr("属性", "属性值")

使用 - 内容文本值

获取元素的 HTML 代码内容:

javascript
html()  // 获取元素的内容
html("内容")  // 设置元素的内容

获取元素的文字内容:

javascript
text()  // 获取元素的内容
text("内容")  // 设置元素的内容

获取表单元素的 value:

javascript
val()  // 获取元素的内容
val("内容")  // 设置元素的内容

使用 - 操作元素

隐式迭代:对同一类元素做相同操作。如果做不同操作,需要使用遍历:

javascript
$("div").each(function (index, domEle) {xxx;})

// 也可以写成
$.each($("div"),function (index, domEle) {xxx;}))
// 主要用于处理数据
  • index 是每个元素的索引号,domEle 是每个 DOM 元素对象,不是 jQuery 对象
  • 想要使用 jQuery 方法,就要给这个 dom 元素转换为 jQuery 对象 $(domEle)

内部添加:

javascript
$("ul").append(li);//放到最后面,类似原生 appendChild

外部添加:

javascript
el.before(内容);  // 把内容放到目标元素前面
el.after(内容);  // 把内容放到目标元素后面

删除元素:

javascript
el.remove()  // 删除匹配节点(本身)
el.empty()  // 删除匹配节点的子节点
el.html("")  // 相当于 empty()

使用 - 宽高

语法用法
width()/height()取得匹配元素宽度和高度值,只算width/height
innerWidth()/innerHeight()取得匹配元素宽度和高度值,包括padding
outerWidth()/outerHeight()取得匹配元素宽度和高度值,包括padding和border
outerWidth(true)/outerHeight(true)取得匹配元素宽度和高度值,包括padding、border和margin
  • 以上参数为空,则获取响应值,返回的是数字型
  • 如果参数未数字,则是修改相应值
  • 参数可以不写单位

使用 - 元素位置

  1. offset() 设置或获取元素偏移
  • offset() 方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系。
  • 该方法有2个属性 left 和 top。offset().top 用于获取距离文档顶部的距离,offset().left 用于获取距离文档左侧的距离。
  • 可以设置元素的偏移:offset({top:10,left:10})。
  1. position() 获取元素偏移
  • position() 方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级没有定位,则以文档为准。

该方法只能获取不能设置偏移

  1. scrollTop() / scrollLeft() 设置或获取元素被卷去的头部或左侧
  • scollTop() 方法设置或返回被选元素卷去的头部。
  • scollLeft() 方法设置或返回被选元素卷去的左侧。

使用 - 事件

注册事件:

javascript
element.事件(function);
$("div").click(function(){ 事件处理程序 })  // 其他事件和原生事件基本一致

绑定事件:

javascript
on(events, fn)
  • events 可以是一个事件名称,如 click,表示对该事件添加监听;也可以是一个对象。
  • fn为触发了事件后执行的回调函数
javascript
// 同一对象不同操作不同回调
$("div").on({
  mouseenter:function() {
    $(this).css("color", "red");
  },
  mouseleave:function() {
    $(this).css("color", "black");
  }
})

// 同一对象不同操作相同回调
$("div").on("mouseenter mouseleave", function(){
  $(this).toggleClass("current");
})

动态创建的元素,click() 没有办法绑定事件,on() 可以给动态生成元素绑定事件。

javascript
$("ul").on("click", "li", function(){
  alert("clicked li");
});
let li = $("<li>click</li>");
$("ul").append(li);

这里的第二个参数为可选参数,语法那里没有标注,因为不常用。

解绑事件可以用 off 函数。

javascript
off(events,[selector],[fn])
javascript
off();  // 解除所有事件
off("click");  // 只解除点击事件
off("click", "li");  // 解除事件委托
123

回调函数可以传入一个参数,作为事件对象。

javascript
on(events,[selector],function(even) { })
even.preventDefault()  // 阻止默认行为 或者用 return false
even.stopPropagation()  // 阻止冒泡

为方便开发而创建的常用库指南