jQuery速查手册
jQuery备忘单,适用于初学者和有经验的开发人员。
入门
引入 jQuery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
官方 CDN
<script src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
jQuery 语法
$(selector).methodOrFunction();
例子
$('#menu').on('click', () =>{
$(this).hide();
});
$("body").css("background", "red");
jQuery 文档准备就绪
$(document).ready(function() {
// 在加载 DOM 后运行
alert('DOM fully loaded!');
});
$(function(){
// 在加载 DOM 后运行
alert('DOM fully loaded!');
});
jQuery 选择器
例子
$("button").click(() => {
$(":button").css("color", "red");
});
组合选择器
$("selector1, selector2 ...selectorn")
基本
- *选择所有元素
- .class选择具有给定类的所有元素
- element选择具有给定标签名称的所有元素
- #id选择具有给定 id 属性的单个元素
- :hidden选择所有隐藏的元素
- :visible选择所有可见的元素
- :contains()选择包含指定文本的所有元素
- :empty选择所有没有子元素的元素(包括文本节点)
- :has()选择至少包含一个与指定选择器匹配的元素的元素
- :parent选择具有至少一个子节点(元素或文本)的所有元素
- parent > child选择由父元素指定的子元素指定的所有直接子元素
- ancestor descendant选择作为给定祖先的后代的所有元素
- prev + next选择所有与 next 匹配且紧接在其前面的同级 prev 的下一个元素
- prev ~ siblings选择 prev 元素之后的所有同级元素,具有相同的父元素,并匹配过滤同级选择器
基本过滤器
- :animated在运行选择器时选择动画进度中的所有元素
- :eq()选择匹配集中索引 n 处的元素
- :even选择偶数元素,索引为零。 另见:奇数
- :first选择第一个匹配的 DOM 元素
- :gt()选择匹配集中索引大于索引的所有元素
- :header选择所有标题元素,如 h1、h2、h3 等
- :lang()选择指定语言的所有元素
- :last选择最后一个匹配的元素
- :lt()选择匹配集中索引小于索引的所有元素
- :not()选择与给定选择器不匹配的所有元素
- :odd选择奇数元素,索引为零。 另见:甚至
- :root选择作为文档根的元素
- :target选择由文档的 URI 的片段标识符指示的目标元素
属性
- [name|="value"]选择具有指定属性且值等于给定字符串或以该字符串开头后跟连字符 (-) 的元素
- [name*="value"]选择具有指定属性且值包含给定子字符串的元素
- [name~="value"]选择具有指定属性的元素,其值包含给定单词,由空格分隔
- [name$="value"]选择具有指定属性且值恰好以给定字符串结尾的元素。 比较区分大小写
- [name="value"]选择具有指定属性且值恰好等于特定值的元素
- [name!="value"]选择不具有指定属性或具有指定属性但不具有特定值的元素
- [name^="value"]选择具有指定属性且值恰好以给定字符串开头的元素
- [name]选择具有指定属性和任意值的元素
- [name="value"]匹配匹配所有指定属性过滤器的元素
子过滤器
- :first-child选择作为其父元素的第一个子元素的所有元素
- :first-of-type选择具有相同元素名称的兄弟姐妹中第一个的所有元素
- :last-child选择作为其父元素的最后一个子元素的所有元素
- :last-of-type选择具有相同元素名称的兄弟中最后一个的所有元素
- :nth-child()选择作为其父元素的第 n 个子元素的所有元素
- :nth-last-child()选择作为其父元素的第 n 个子元素的所有元素,从最后一个元素到第一个元素计数
- :nth-last-of-type()选择所有元素,这些元素是其父元素的第 n 个子元素,相对于具有相同元素名称的兄弟元素,从最后一个元素到第一个元素计数
- :nth-of-type()选择所有元素,这些元素是其父元素相对于具有相同元素名称的兄弟元素的第 n 个子元素
- :only-child选择作为其父元素的唯一子元素的所有元素
- :only-of-type()选择所有没有同名元素的元素
Forms
- :button选择所有按钮元素和按钮类型的元素
- :checkbox选择复选框类型的所有元素
- :checked匹配所有选中或选择的元素
- :disabled选择所有禁用的元素
- :enabled选择所有启用的元素
- :focus如果当前获得焦点,则选择元素
- :file选择类型文件的所有元素
- :image选择图像类型的所有元素
- :input选择所有输入、文本区域、选择和按钮元素
- :password选择密码类型的所有元素
- :radio选择无线电类型的所有元素
- :reset选择重置类型的所有元素
- :selected选择所有选中的元素
- :submit选择提交类型的所有元素
- :text选择文本类型的所有输入元素
jQuery 属性
例子
$('h2').css({
color: 'blue',
backgroundColor: 'gray',
fontSize: '24px'
});
jQuery 添加类
$('.button').addClass('active');
jQuery 移除类
$('.button').on('mouseleave', evt => {
let e = evt.currentTarget;
$(e).removeClass('active');
});
jQuery 切换类
$('.choice').toggleClass('highlighted');
CSS
- .addClass()将指定的类添加到匹配元素集中的每个元素
- .hasClass()确定是否有任何匹配的元素被分配给给定的类
- .removeClass()从匹配元素集中的每个元素中删除单个类、多个类或所有类
- .toggleClass()根据类的存在或状态参数的值,从匹配元素集中的每个元素添加或删除一个或多个类
- .css()获取匹配元素集中第一个元素的计算样式属性
- jQuery.cssHooks直接连接到 jQuery 以覆盖特定 CSS 属性的检索或设置方式、标准化 CSS 属性命名或创建自定义属性
- jQuery.cssNumber包含所有可以在没有单位的情况下使用的 CSS 属性的对象。
.css()
方法使用此对象来查看它是否可以将 px 附加到无单位值 - jQuery.escapeSelector()转义任何在 CSS 选择器中具有特殊含义的字符
jQuery 操控
Examples
/*<span>Span.</span>*/
$('span').after('<p>Paragraph.</p>');
/*<span>Span.</span><p>Paragraph.</p>*/
/*<span>Span.</span>*/
$('<span>Span.</span>').replaceAll('p');
/*<p>Span.</p>*/
/*<span>This is span.</span>*/
$('span').wrap('<p></p>');
/*<p><span>This is span.</span></p>*/
jQuery 遍历
过滤
- .eq()将匹配的元素集减少到指定索引处的集合
- .filter()将匹配的元素集减少到匹配选择器或传递函数测试的元素
- .first()将匹配的元素集减少到集合中的第一个
- .has()将匹配的元素集减少到具有与选择器或DOM元素相匹配的后代的元素
- .is()检查当前匹配的元素与选择器,元素或jQuery对象的元素集,如果至少其中一个元素与给定参数匹配,则返回true
- .last()将匹配的元素集减少到集合中的最后一个元素
- .map()将当前匹配的每个元素通过函数传递,从而产生包含返回值的新jQuery对象
- .not()从匹配元素集中删除元素
- .slice()将匹配的元素集减少为由一系列索引指定的子集
树遍历
- .children()在一组匹配元素中获取每个元素的孩子,并被选择器进行过滤
- .closest()对于集合中的每个元素,通过测试元素本身并通过其祖先在DOM树中的祖先进行遍历来获取与选择器匹配的第一个元素
- .find()在当前匹配元素集中获取每个元素的后代,并由选择器,jQuery对象或元素过滤
- .next()在匹配的元素集中,立即获取每个元素的兄弟姐妹。 如果提供了选择器,则仅在匹配该选择器的情况下才能检索下一个兄弟姐妹
- .nextAll()在一组匹配元素中获取每个元素的所有以下兄弟姐妹,并由选择器进行过滤
- .nextUntil()将每个元素的所有以下兄弟姐妹添加到,但不包括通过选择器,DOM节点或jQuery对象匹配的元素
- .parent()在当前匹配元素集中获取每个元素的父,由选择器选择过滤
- .parents()在当前匹配元素集中获取每个元素的祖先,并被选择器进行过滤
- .parentsUntil()在当前匹配元素集中获取每个元素的祖先,直到但不包括由选择器,DOM节点或jQuery对象匹配的元素
- .prev()在匹配元素集中获取每个元素的立即兄弟姐妹。 如果提供了选择器,则仅在匹配该选择器时才检索先前的同胞
- .prevAll()在一组匹配元素中获取每个元素的所有先前兄弟姐妹,并由选择器进行过滤
- .prevUntil()将每个元素的所有先前兄弟姐妹添加到,但不包括由选择器,DOM节点或jQuery对象匹配的元素
- .siblings()在匹配的元素集中获取每个元素的兄弟姐妹,并被选择器进行过滤
jQuery 事件
Examples
// 鼠标事件“点击”
$('#menu-button').on('click', () => {
$('#menu').show();
});
// 键盘事件“键盘”
$('#textbox').on('keyup', () => {
$('#menu').show();
});
// 滚动事件“滚动”
$('#menu-button').on('scroll', () => {
$('#menu').show();
});
事件对象
$('#menu').on('click', event => {
$(event.currentTarget).hide();
});
方法链
$('#menu-btn').on('mouseenter', () => {
$('#menu').show();
}).on('mouseleave', () => {
$('#menu').hide();
});
防止事件
$( "p" ).click(function( event ) {
event.stopPropagation();
// Do something
});
事件对象
- event.currentTarget事件冒泡阶段中的当前 DOM 元素
- event.delegateTarget附加了当前调用的 jQuery 事件处理程序的元素
- event.data绑定当前正在执行的处理程序时传递给事件方法的可选数据对象
- event.isDefaultPrevented()返回是否曾在此事件对象上调用过 event.preventDefault()
- event.isImmediatePropagationStopped()返回是否曾在此事件对象上调用过 event.stopImmediatePropagation()
- event.isPropagationStopped()返回是否曾在此事件对象上调用过 event.stopPropagation()
- event.metaKey指示事件触发时是否按下了 META 键
- event.namespace触发事件时指定的命名空间
- event.pageX鼠标相对于文档左边缘的位置
- event.pageY鼠标位置相对于文档的上边缘
- event.preventDefault()如果调用该方法,则不会触发事件的默认动作
- event.relatedTarget事件中涉及的其他 DOM 元素(如果有)
- event.result由此事件触发的事件处理程序返回的最后一个值,除非该值未定义
- event.stopImmediatePropagation()保持其余的处理程序不被执行,并防止事件在 DOM 树中向上冒泡
- event.stopPropagation()防止事件在 DOM 树中向上冒泡,从而防止任何父处理程序收到事件通知
- event.target发起事件的 DOM 元素
- event.timeStamp浏览器创建事件的时间与 1970 年 1 月 1 日之间的毫秒差
- event.type描述事件的性质
- event.which对于键或鼠标事件,此属性指示按下的特定键或按钮
事件处理程序附件
- .bind()将处理程序附加到元素的事件
- .delegate()基于一组特定的根元素,将处理程序附加到现在或将来与选择器匹配的所有元素的一个或多个事件
- .die()从元素中删除先前使用 .live() 附加的事件处理程序
- .live()现在和将来为所有匹配当前选择器的元素附加一个事件处理程序
- .off()删除事件处理程序
- .on()将一个或多个事件的事件处理函数附加到所选元素
- .one()将处理程序附加到元素的事件。 每个事件类型的每个元素最多执行一次处理程序
- .trigger()执行附加到给定事件类型的匹配元素的所有处理程序和行为
- .triggerHandler()执行附加到事件元素的所有处理程序
- .unbind()从元素中删除先前附加的事件处理程序
- .undelegate()根据一组特定的根元素,从与当前选择器匹配的所有元素的事件中删除处理程序
形式事件
- .blur()将事件处理程序绑定到 blur JavaScript 事件,或在元素上触发该事件
- .change()将事件处理程序绑定到更改 JavaScript 事件,或在元素上触发该事件
- .focus()将事件处理程序绑定到焦点 JavaScript 事件,或在元素上触发该事件
- .focusin()将事件处理程序绑定到 focusin 事件
- .focusout()将事件处理程序绑定到 focusout JavaScript 事件
- .select()将事件处理程序绑定到 select JavaScript 事件,或在元素上触发该事件
- .submit()将事件处理程序绑定到提交 JavaScript 事件,或在元素上触发该事件
鼠标事件
- .click()将事件处理程序绑定到 click JavaScript 事件,或在元素上触发该事件
- .contextMenu()将事件处理程序绑定到 contextmenu JavaScript 事件,或在元素上触发该事件
- .dblclick()将事件处理程序绑定到 dblclick JavaScript 事件,或在元素上触发该事件
- .hover()将两个处理程序绑定到匹配的元素,当鼠标指针进入和离开元素时执行
- .mousedown()将事件处理程序绑定到 mousedown JavaScript 事件,或在元素上触发该事件
- .mouseenter()绑定要在鼠标进入元素时触发的事件处理程序,或在元素上触发该处理程序
- .mouseleave()绑定要在鼠标离开元素时触发的事件处理程序,或在元素上触发该处理程序
- .mousemove()将事件处理程序绑定到 mousemove JavaScript 事件,或在元素上触发该事件
- .mouseout()将事件处理程序绑定到 mouseout JavaScript 事件,或在元素上触发该事件
- .mouseover()将事件处理程序绑定到 mouseover JavaScript 事件,或在元素上触发该事件
- .mouseup()将事件处理程序绑定到 mouseup JavaScript 事件,或在元素上触发该事件
- .toggle()将两个或多个处理程序绑定到匹配的元素,以在交替单击时执行
jQuery Effects
例子
$('#menu-button').on('click', () => {
// $('#menu').fadeIn(400, 'swing')
$('#menu').fadeIn();
});
淡出效果
$('#menu-button').on('click', () => {
// $('#menu').fadeOut(400, 'swing')
$('#menu').fadeOut();
});
自定义
- .animate()执行一组 CSS 属性的自定义动画
- .clearQueue()从队列中删除所有尚未运行的项目
- .delay()设置一个计时器来延迟队列中后续项目的执行
- .dequeue()为匹配的元素执行队列上的下一个函数
- jQuery.dequeue()为匹配的元素执行队列上的下一个函数
- .finish()停止当前运行的动画,移除所有排队的动画,并完成匹配元素的所有动画
- jQuery.fx.interval动画触发的速率(以毫秒为单位)
- jQuery.fx.off全局禁用所有动画
- jQuery.speed创建一个对象,其中包含一组准备用于自定义动画定义的属性
- .queue()显示要在匹配元素上执行的函数队列
- jQuery.queue()显示要在匹配元素上执行的函数队列
- .stop()停止匹配元素上当前运行的动画
jQuery Ajax
Examples
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize()
}).done(function(server_data){
console.log("success" + server_data);
}).fail(function(jqXHR, status, err){
console.log("fail" + err);
});
全局 Ajax 事件处理程序
- .ajaxComplete()注册要在 Ajax 请求完成时调用的处理程序。 这是一个 AjaxEvent
- .ajaxError()注册一个处理程序,当 Ajax 请求完成但出现错误时调用。 这是一个 Ajax 事件
- .ajaxSend()附加一个要在发送 Ajax 请求之前执行的函数。 这是一个 Ajax 事件
- .ajaxStart()注册一个处理程序,在第一个 Ajax 请求开始时调用。 这是一个 Ajax 事件
- .ajaxStop()注册一个处理程序,在所有 Ajax 请求完成时调用。 这是一个 Ajax 事件
- .ajaxSuccess()附加一个要在 Ajax 请求成功完成时执行的函数。 这是一个 Ajax 事件
各种各样的
延迟对象
- jQuery.Deferred()返回可链接实用程序对象的工厂函数,该对象具有将多个回调注册到回调队列、调用回调队列以及中继任何同步或异步函数的成功或失败状态的方法
- deferred.always()添加要在延迟对象被解析或拒绝时调用的处理程序
- deferred.done()添加要在解析延迟对象时调用的处理程序
- deferred.fail()添加处理程序以在延迟对象被拒绝时调用
- deferred.isRejected()判断一个 Deferred 对象是否被拒绝
- deferred.isResolved()判断一个 Deferred 对象是否已经解析
- deferred.notify()使用给定的 args 在 Deferred 对象上调用 progressCallbacks
- deferred.notifyWith()使用给定的上下文和参数调用 Deferred 对象的 progressCallbacks
- deferred.pipe()过滤和/或链接 Deferreds 的实用方法
- deferred.progress()添加在 Deferred 对象生成进度通知时要调用的处理程序
- deferred.promise()返回一个 Deferred 的 Promise 对象
- deferred.reject()拒绝 Deferred 对象并使用给定的 args 调用任何 failCallbacks
- deferred.rejectWith()拒绝 Deferred 对象并使用给定的上下文和参数调用任何 failCallbacks
- deferred.resolve()解析一个 Deferred 对象并使用给定的 args 调用任何 doneCallbacks
- deferred.resolveWith()解析延迟对象并使用给定的上下文和参数调用任何 doneCallbacks
- deferred.state()确定 Deferred 对象的当前状态
- deferred.then()添加要在延迟对象被解析、拒绝或仍在进行中时调用的处理程序
- .promise()返回一个 Promise 对象以观察绑定到集合的特定类型的所有操作(无论是否排队)何时完成
公用事业
- jQuery.boxModel说明用户浏览器中的当前页面是否正在使用 W3C CSS 盒模型呈现
- jQuery.browser包含用户代理的标志,从 navigator.userAgent 读取。 此属性在 jQuery 1.9 中被删除,只能通过 jQuery.migrate 插件使用。 请尝试改用特征检测
- jQuery.contains()检查一个 DOM 元素是否是另一个 DOM 元素的后代
- jQuery.each()通用迭代器函数,可用于无缝迭代对象和数组。 具有长度属性的数组和类似数组的对象(例如函数的参数对象)按数字索引迭代,从 0 到 length-1。 其他对象通过它们的命名属性迭代
- jQuery.extend()将两个或多个对象的内容合并到第一个对象中
- jQuery.globalEval()全局执行一些 JavaScript 代码
- jQuery.grep()查找满足过滤功能的数组元素。 原数组不受影响
- jQuery.inArray()在数组中搜索指定值并返回其索引(如果未找到,则返回 -1)
- jQuery.isArray()判断参数是否为数组
- jQuery.isEmptyObject()检查对象是否为空(不包含可枚举属性)
- jQuery.isFunction()确定其参数是否可作为函数调用
- jQuery.isNumeric()确定其参数是否表示 JavaScript 数字
- jQuery.isPlainObject()检查对象是否为普通对象
- jQuery.isWindow()判断参数是否为窗口
- jQuery.isXMLDoc()检查 DOM 节点是否在 XML 文档中(或者是 XML 文档)
- jQuery.makeArray()将类数组对象转换为真正的 JavaScript 数组
- jQuery.map()将数组或对象中的所有项转换为新的项数组
- jQuery.merge()将两个数组的内容合并到第一个数组中
- jQuery.noop()空函数
- jQuery.now()返回代表当前时间的数字
- jQuery.parseHTML()将字符串解析为 DOM 节点数组
- jQuery.parseJSON()获取格式正确的 JSON 字符串并返回生成的 JavaScript 值
- jQuery.parseXML()将字符串解析为 XML 文档
- jQuery.proxy()接受一个函数并返回一个总是有特定上下文的新函数
- jQuery.support表示存在不同浏览器功能或错误的属性集合。 用于 jQuery 的内部使用; 当内部不再需要特定属性以提高页面启动性能时,可能会删除它们。 对于您自己项目的功能检测需求,我们强烈建议使用外部库(例如 Modernizr),而不是依赖于 jQuery.support 中的属性
- jQuery.trim()删除字符串开头和结尾的空格
- jQuery.type()确定对象的内部 JavaScript [[Class]]
- jQuery.unique()对 DOM 元素数组进行适当的排序,并删除重复项。 请注意,这仅适用于 DOM 元素数组,不适用于字符串或数字
- jQuery.uniqueSort()对 DOM 元素数组进行适当的排序,并删除重复项。 请注意,这仅适用于 DOM 元素数组,不适用于字符串或数字
回调对象
- jQuery.Callbacks()一个多用途回调列表对象,提供了一种管理回调列表的强大方法
- callbacks.add()将回调或回调集合添加到回调列表
- callbacks.disable()禁止回调列表做更多的事情
- callbacks.disabled()确定回调列表是否已被禁用
- callbacks.empty()从列表中删除所有回调
- callbacks.fire()使用给定参数调用所有回调
- callbacks.fired()确定回调是否已至少被调用一次
- callbacks.fireWith()使用给定的上下文和参数调用列表中的所有回调
- callbacks.has()确定列表是否附加了任何回调。如果回调作为参数提供,请确定它是否在列表中
- callbacks.lock()将回调列表锁定在其当前状态
- callbacks.locked()判断回调列表是否被锁定
- callbacks.remove()从回调列表中删除回调或回调集合
说明
jQuery备忘单对于初学者和有经验的开发人员都是很好的参考入门,为开发人员分享快速参考备忘单。