jQuery的字面意思其实就是JavaScript和查询(Query),即用于辅助开发JavaScript的库。jQuery 极大地简化了 JavaScript 编程,jQuery使用户可以更加方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,而且方便地为网站提供AJAX交互。
实例找到div标签并给div标签设置为红色
原生js操作 var d1Ele = document.getElementById('d1'); d1Ele.style.color = 'red'; jQuery操作 $('#d1').css('color','blue'); 您可以从网页中添加 jQuery
1、从官网http://jquery.com/download/下载 jQuery 库
里面分为:Production version(用于实际的网站中,已被精简和压缩)和Development version(用于测试和开发,未压缩,是可读的代码),一般使用Production version压缩版本的。
2、从 CDN 中载入 jQuery, 如从 Google 或 百度 中加载 jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> 或者 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> 或者 <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.slim.js"></script> 一定要先导入后使用
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。
$(selector).action() jQuery 选择器可以对 HTML 元素组或单个元素进行操作。 jQuery 选择器基于元素的 id、类、类型、属性、属性值等查找HTML 元素。它基于已经存在的 CSS 选择器外,还有一些自定义的选择器。
ID选择器、类名选择器、标签选择器、组合选择器
| 选择器 | 实例 | 选取 |
|---|---|---|
| * | $("*") | 所有元素 |
| #id | $("#d1") | id=“d1” 的元素 |
| .class | $(".name") | class=“name” 的所有元素 |
| .class , .class | $(".name,.password") | class 为 “name” 或 “password” 的所有元素 |
| *element | $(“span”) | 所有 <span> 元素 |
| el1,el2,el3 | $(“h1,div,p”) | 所有 <h1>、<div> 和 <p> 元素 |
DOM对象与jQuery对象互相转换 $('#d1')[0] var d1Ele = document.getElementById('d1'); $(d1Ele) | 选择器 | 实例 | 选取 |
|---|---|---|
| parent > child | $(“div > p”) | <div> 元素的直接子元素的所有 <p> 元素 |
| parent descendant | $(“div p”) | <div> 元素的后代的所有 <p> 元素 |
| element + next | $(“div + p”) | 每个 <div> 元素相邻的下一个 <p> 元素 |
| element ~ siblings | $(“div ~ p”) | <div> 元素同级的所有 <p> 元素 |
| 选择器 | 实例 | 选取 |
|---|---|---|
| :first | $(“p:first”) | 第一个 <p> 元素 |
| :last | $(“p:last”) | 最后一个 <p> 元素 |
| :even | $(“tr:even”) | 所有偶数 <tr> 元素 |
| :odd | $(“tr:odd”) | 所有奇数 <tr> 元素 |
| :gt(nu) | $(“ul li:gt(3)”) | 列举 index 大于 3 的元素 |
| :lt(nu) | $(“ul li:lt(3)”) | 列举 index 小于 3 的元素 |
| :eq(nu) | $(“ul li:eq(3)”) | 列举 index 等于 3 的元素 |
| :not(selector) | $(“input:not(:empty)”) | 所有不为空的输入元素 |
| :has(element) | $(“div:has(a)”) | 返回拥有一个或多个元素在其内的所有元素 |
/用ul标签举例 $('#ul>li:first') $('#u1>li:last') $('#ul>li:eq(3)') $('#ul>li:even') $('#ul>li:odd') $('#ul>li:gt(3)') $('#ul>li:lt(3)') $('#u1>li:not(.c1)') 最后一个has的玩法需要写个三个div:一个空div、一个儿子有a标签、一个儿子没有a,孙子有a标签 $('div:has(a)') 输出: k.fn.init(3) [div, div#d2, div#d3, prevObject: k.fn.init(1)] | 方法 | 描述 |
|---|---|
| addClass() | 向被选元素添加一个或多个类名 |
| after() | 在被选元素后插入内容 |
| append() | 在被选元素的结尾插入内容 |
| appendTo() | 在被选元素的结尾插入 HTML 元素 |
| attr() | 设置或返回被选元素的属性/值 |
| before() | 在被选元素前插入内容 |
| clone() | 生成被选元素的副本 |
| css() | 为被选元素设置或返回一个或多个样式属性 |
| detach() | 移除被选元素(保留数据和事件) |
| empty() | 从被选元素移除所有子节点和内容 |
| hasClass() | 检查被选元素是否包含指定的 class 名称 |
| height() | 设置或返回被选元素的高度 |
| html() | 设置或返回被选元素的内容 |
| innerHeight() | 返回元素的高度(包含 padding,不包含 border) |
| innerWidth() | 返回元素的宽度(包含 padding,不包含 border) |
| insertAfter() | 在被选元素后插入 HTML 元素 |
| insertBefore() | 在被选元素前插入 HTML 元素 |
| offset() | 设置或返回被选元素的偏移坐标(相对于文档) |
| offsetParent() | 返回第一个定位的祖先元素 |
| outerHeight() | 返回元素的高度(包含 padding 和 border) |
| outerWidth() | 返回元素的宽度(包含 padding 和 border) |
| position() | 返回元素的位置(相对于父元素) |
| prepend() | 在被选元素的开头插入内容 |
| prependTo() | 在被选元素的开头插入 HTML 元素 |
| prop() | 设置或返回被选元素的属性/值 |
| remove() | 移除被选元素(包含数据和事件) |
| removeAttr() | 从被选元素移除一个或多个属性 |
| removeClass() | 从被选元素移除一个或多个类 |
| removeProp() | 移除通过 prop() 方法设置的属性 |
| replaceAll() | 把被选元素替换为新的 HTML 元素 |
| replaceWith() | 把被选元素替换为新的内容 |
| scrollLeft() | 设置或返回被选元素的水平滚动条位置 |
| scrollTop() | 设置或返回被选元素的垂直滚动条位置 |
| text() | 设置或返回被选元素的文本内容 |
| toggleClass() | 在被选元素中添加/移除一个或多个类之间切换 |
| unwrap() | 移除被选元素的父元素 |
| val() | 设置或返回被选元素的属性值(针对表单元素) |
| width() | 设置或返回被选元素的宽度 |
常用实例:
三级菜单展示
$(this).next().removeClass('hide').parent().siblings().find('.items').addClass('hide') 直接操作css属性
// 两个参数设置属性 $('#p1').css('font-size','24px') // 一个参数获取属性 $('#p1').css('font-size') // 一次设置多个属性 $('#p1').css({"border":"1px solid black","color":"blue"}) 位置操作
// 不加参数获取位置参数 $(".c3").offset() // 加参数设置位置参数 $(".c3").offset({top:284,left:400}) // position只能获取值,不能设置值 // scrollTop获取当前滚动条偏移量 $('window').scrollTop(); $('window').scrollTop(0); // 设置滚动条偏移量 文本操作
text() html() 不加参数获取值,加参数设置值 val() 不加参数获取值,加参数设置值 属性操作
// 获取文本属性 $('#d1').attr('s1') // 获取属性值 $('#d1').attr('s1','haha') // 设置属性值 $('#d1').attr({'num':50,'taidi':'gay'}) // 设置多个属性 $('#d1').removeAttr('taidi') // 删除一个属性 // 获取check与radio标签的checked属性 $('#i1').prop('checked') $('#i1').prop('checked',true) 文档处理
// 标签内部尾部追加元素 $('#d1').append(pEle) $pEle.appendTo($('#d1')) // 标签内部头部添加元素 $('#d1').prepend(pEle) $pEle.prependTo($('#d1')) // 标签外部下面添加元素 $(A).after(B)// 把B放到A的后面 $(A).insertAfter(B)// 把A放到B的后面 // 标签外部上面添加元素 $(A).before(B)// 把B放到A的前面 $(A).insertBefore(B)// 把A放到B的前面 // 替换标签 replaceWith() // 什么被什么替换 replaceAll() // 拿什么替换什么 // 克隆事例 <button id="b2">屠龙宝刀,点击就送</button> // clone方法加参数true,克隆标签并且克隆标签带的事件 $("#b2").on("click", function () { $(this).clone(true).insertAfter(this); // true参数 }); | 选择器 | 实例 | 选取 |
|---|---|---|
| :input | $(":input") | 所有 input 元素 |
| :text | $(":text") | 所有带有 type=“text” 的 input 元素 |
| :password | $(":password") | 所有带有 type=“password” 的 input 元素 |
| :checkbox | $(":checkbox") | 所有带有 type=“checkbox” 的 input 元素 |
| :submit | $(":submit") | 所有带有 type=“submit” 的 input 元素 |
| :reset | $(":reset") | 所有带有 type=“reset” 的 input 元素 |
| :button | $(":button") | 所有带有 type=“button” 的 input 元素 |
| :image | $(":image") | 所有带有 type=“image” 的 input 元素 |
| :file | $(":file") | 所有带有 type=“file” 的 input 元素 |
| :enabled | $(":enabled") | 所有启用的 input 元素 |
| :disabled | $(":disabled") | 所有禁用的 input 元素 |
| :selected | $(":selected") | 所有选定的 input 元素 |
| :checked | $(":checked") | 所有选中的 input 元素 |
// 针对表单内的标签 $('input[type="text"]') // 简化写法 $(':text') // 找到所有被选中的checkbox $(':checkbox') // 注意select框中默认selected标签也会被找到 $('input:checkbox') | 方法 | 描述 |
|---|---|
| add() | 把元素添加到匹配元素的集合中 |
| children() | 返回被选元素的所有直接子元素 |
| closest() | 返回被选元素的第一个祖先元素 |
| contents() | 返回被选元素的所有直接子元素(包含文本和注释节点) |
| each() | 为每个匹配元素执行函数 |
| filter() | 把匹配元素集合缩减为匹配选择器或匹配函数返回值的新元素 |
| find() | 返回被选元素的后代元素 |
| first() | 返回被选元素的第一个元素 |
| is() | 根据选择器/元素/jQuery 对象检查匹配元素集合,如果存在至少一个匹配元素,则返回 true |
| last() | 返回被选元素的最后一个元素 |
| next() | 返回被选元素的后一个同级元素 |
| nextAll() | 返回被选元素之后的所有同级元素 |
| nextUntil() | 返回介于两个给定参数之间的每个元素之后的所有同级元素 |
| not() | 从匹配元素集合中移除元素 |
| offsetParent() | 返回第一个定位的父元素 |
| parent() | 返回被选元素的直接父元素 |
| parents() | 返回被选元素的所有祖先元素 |
| parentsUntil() | 返回介于两个给定参数之间的所有祖先元素 |
| prev() | 返回被选元素的前一个同级元素 |
| prevAll() | 返回被选元素之前的所有同级元素 |
| prevUntil() | 返回介于两个给定参数之间的每个元素之前的所有同级元素 |
| siblings() | 返回被选元素的所有同级元素 Returns all sibling elements of the selected element |
| slice() | 把匹配元素集合缩减为指定范围的子集 |
each() 方法为每个匹配元素规定要运行的函数。 $.each(array,function(index){ console.log(array[index]) }) $.each(array,function(){ console.log(this); }) // 支持简写 $divEles.each(function(){ console.log(this) // 标签对象 }) python代码诠释链式调用,其实就是在调用方法之后讲对象再次返回
<div> <p>p1</p> <p>p2</p> </div> $('div>p').first().addclass('c1').next().addclass('c2'); 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。
$(document).ready() 方法允许我们在文档完全加载完后执行函数。为了防止网页还没加载完,js代码就已经执行,通常利用下面两种方式来书写js代码。
$(document).ready(function(){ // 在这里写你的JS代码... }) 网页最后 $(function(){ // 在这里写你的代码 }) click() 方法是当按钮点击事件被触发时会调用一个函数。
在下面的实例中,当点击事件在某个<p> 元素上触发时,隐藏当前的 <p> 元素:
$("p").click(function(){ $(this).hide(); }); 当双击元素时,会发生 dblclick 事件。
$("p").dblclick(function(){ $(this).hide(); }); 当鼠标指针穿过元素时,会发生 mouseenter 事件。
$("#p1").mouseenter(function(){ alert("鼠标经过了!"); }); 当鼠标指针离开元素时,会发生 mouseleave 事件。
$("#p1").mouseleave(function(){ alert("鼠标离开了!"); }); 当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。
$("#p1").mousedown(function(){ alert("鼠标按下!"); }); 当在元素上松开鼠标按钮时,会发生 mouseup 事件。
ouseup(function(){ alert("鼠标松开!"); }); hover()方法用于模拟光标悬停事件。当鼠标移动到元素上时,会触发指定的第一个函数(mouseenter);当鼠标移出这个元素时,会触发指定的第二个函数(mouseleave)。
$("#p1").hover(function(){ alert("你的光标悬停!"); }, function(){ alert("你的光标已经离开!"); }); 当元素获得焦点时,发生 focus 事件。
$("input").focus(function(){ $(this).css("background-color","#eee"); }); 当元素失去焦点时,发生 blur 事件。
$("input").blur(function(){ $(this).css("background-color","#eee"); }); input实时监听,输入内容时发生 input 事件
$('#i1').on('input',function () { console.log($(this).val()) }); 利用preventDefault() $('input').click(function (e) { alert(123); e.preventDefault(); }); 直接返回false $('input').click(function (e) { alert(123); return false; }); iv>p>span // 三者均绑定点击事件 $("span").click(function (e) { alert("span"); e.stopPropagation(); // 阻止事件冒泡 }); <button>按钮</button> <script src="jQuery-3.3.1.js"></script> <script> $('body').on('click','button',function () { alert(123) }) </script> 下面的表格列出了用于创建动画效果的 jQuery 方法。
| 方法 | 描述 |
|---|---|
| delay() | 对被选元素的所有排队函数(仍未运行)设置延迟 |
| dequeue() | 移除下一个排队函数,然后执行函数 |
| fadeIn() | 逐渐改变被选元素的不透明度,从隐藏到可见 |
| fadeOut() | 逐渐改变被选元素的不透明度,从可见到隐藏 |
| fadeTo() | 把被选元素逐渐改变至给定的不透明度 |
| fadeToggle() | 在 fadeIn() 和 fadeOut() 方法之间进行切换 |
| finish() | 对被选元素停止、移除并完成所有排队动画 |
| hide() | 隐藏被选元素 |
| queue() | 显示被选元素的排队函数 |
| show() | 显示被选元素 |
| slideDown() | 通过调整高度来滑动显示被选元素 |
| slideToggle() | slideUp() 和 slideDown() 方法之间的切换 |
| slideUp() | 通过调整高度来滑动隐藏被选元素 |
| stop() | 停止被选元素上当前正在运行的动画 |
| toggle() | hide() 和 show() 方法之间的切换 |
标签记得设置高和宽 $('img').hide(5000) $('img').show(5000) $('img').slideDown(5000) $('img').slideUp(5000) $('img').fadeIn(5000) $('img').fadeOut(5000) $('img').fadeTo(5000,0.4)