jQuery 与 Bootstrap框架
jQuery 与 Bootstrap框架
目录
-
初始jQuery
1.jQuery简介
2.jQuery的优势
3.jQuery的注意事项
-
jQuery基本使用
1.jQuery的基本语法
2.jQuery选择器
3.jQuery查找标签与js的区别
-
jQuery筛选器
1.基本筛选器
2.属性选择器
3.表单筛选器
4.筛选器的方法
-
jQuery的操作标签
1.样式操作
2.位置操作
3.文本操作
4.属性操作
5.文档处理
-
jQuery绑定事件
1.jQuery绑定事件与js绑定事件的对比
2.移除事件
3.阻止后续事件
4.事件冒泡
5.事件委托
6.动画效果
-
Bootstrap框架
初识jQuery
jQuery简介
jQuery类 可以兼容多浏览器的JavaScript库(用jQuery 写的代码可以使用多种浏览器实现)
极大的简化了JavaScript编程,其宗旨是 写的更少做的更多
jQuery优势
- 一种轻量级的JS框架,他的核心文件小,不会影响页面的加载速度
- 丰富DOM选择器,jQuery的选择器用起来很方便
- 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁
- 支持事件、样式、动画支持,并简化了js操作css的代码,代码的可读性大于js
- 支持Ajax操作
- 可以跨浏览器兼容
- 插件扩展开发, jQuery有着丰富的第三方的插件
使用jQuery的注意事项
-
使用jQuery必须要先导入
jQuery的本质就是一个js文件,只是提前写好了诸多js方法,可以根据文件路径直接使用
(jQuery分为压缩版本和非压缩版本,压缩版本中的js代码的文件名都用一个字母表示)
-
在导入的时候,遵循网络CDN服务或者本地导入
本地导入就是提前下好文件,后直接导入
CDN服务(内容分发网络)只有在计算机联网的时候才可以直接导入
jQuery基本使用
jQuery的基本语法
$(选择器).动作
$(selector).action()
正规写法:jQuery()
jQuery选择器
选择器 | 选择器语法 |
---|---|
id选择器 | $("#id") |
标签选择器 | $("tagName") |
class选择器 | $(".className") |
选择器之间的配合使用 | $("div.c1") 找到有c1 class类的div标签 |
组合选择器 | $("#id, .className, tagName") 在jQuery()中选择器之间用逗号隔开 |
层级选择器 | 这里的x,y可以为任意选择器 |
jQuery选择器查找标签之后的结果与js的区别
结果集都是数组但是功能有区别
1.如果使用索引取值 那么都是标签对象
标签对象是无法调用jQuery提供的方法的
2.标签对象如果想转换成jQuery对象需要使用 $()
转换成jQuery对象的目的是为了使用jQuery提供的更多方法
jQuery筛选器
基本筛选器
语法 | 含义 |
---|---|
:first | 第一个 |
:last | 最后一个 |
:eq(index) | 索引等于index的那个元素 |
:even | 匹配所有索引值为偶数的元素,从 0 开始计数 |
:odd | 匹配所有索引值为奇数的元素,从 0 开始计数 |
:gt(index) | 匹配所有大于给定索引值的元素 |
:lt(index) | 匹配所有小于给定索引值的元素 |
:not(元素选择器) | 移除所有满足not条件的标签 |
:has(元素选择器) | 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找) |
属性选择器
属性选择器 | 意义 |
---|---|
[attribute=value] | 属性等于 |
[attribute!=value] | 属性不等于 |
举例
<input type="text">
<input type="password">
<input type="checkbox">
$("input[type='checkbox']");// 取到checkbox类型的input标签
$("input[type!='text']");// 取到类型不是text的input标签
表单筛选器
在表单中
表单筛选语法 | 含义 |
---|---|
表单属性 | <input type = '表单' class = " > |
:text | 匹配所有普通文本框 |
:password | 匹配所有密文展示框 |
:file | 匹配所有文件域 |
:radio | 匹配所有单选框 |
:checkbox | 匹配所有多选框 |
:submit | 匹配所有提交按钮,匹配 type="submit" 的input或者button |
:reset | 匹配所有重置按钮 |
:button | 匹配所有按钮 |
表单对象属性: | <input type = '表单' class = ' ' 表单对象属性 value = ‘数据’ > |
:enabled | 匹配所有可用元素 |
:disabled | 匹配所有不可用元素 |
:checked | 匹配所有选中的被选中元素(复选框、单选框等,select中的option) |
:selected | 匹配select中的option |
筛选器方法
方法 | 作用 |
---|---|
$("#id").next() | 查找下一个同级别元素 |
$("#id").nextAll() | 查找下面所有同级别的元素 |
$("#id").nextUntil("# i2") | 查找下面同级别指定元素 |
$("#id").prve() | 查找上一个同级别的元素 |
$("#id").prveAll() | 查找上面所有同级别的元素 |
$("#id").prveUntil(" # i2") | 查找上面同级别的指定元素 |
$("#id").parent() | 查找当前元素的父辈元素 |
$("#id").parents() | 查找当前元素的所有父辈元素 |
$("#id").parentsUntil() | 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止 |
$("#id").children(); | 查找当前元素的所有子代元素 |
$("#id").siblings(); | 查找当前元素的所有同级别元素 |
由于对象调用方法后还会返回一个对象,扔旧可以再次调用,故而实现了链式操作的效果
操作标签
样式操作
作用 | jQuery操作 | js操作 |
---|---|---|
添加指定的CSS类名 | addClass(); | classList.add() |
移除指定的CSS类名 | removeClass(); | classList.remove() |
判断样式存不存在 | hasClass(); | classList.contains() |
切换CSS类名,如果有就移除,如果没有就添加 | toggleClass(); | classList.toggle() |
CSS类 | .css('样式名','样式值') | style.样式名 = '样式值' |
位置操作
方法 | 作用 |
---|---|
offset() | 获取匹配元素在当前窗口的相对偏移或设置元素位置 |
position() | 获取匹配元素相对父元素的偏移 |
scrollTop() | 获取匹配元素相对滚动条顶部的偏移 |
scrollLeft() | 获取匹配元素相对滚动条左侧的偏移 |
-
offset()与 position()的区别:
.offset()允许检索一个元素相对于文档(document)的当前位置
.position() 是相对于父级元素的位移
文本操作
作用 | jQuery | JS |
---|---|---|
取得所有匹配元素的内容 | text() | innerText() |
取得第一个匹配元素的html内容 | html() | innerHTML() |
取得第一个匹配元素的当前值 | val() | value = ' ' |
获取标签内的文件值 | [0].files | files |
属性操作
方法 | 作用 |
---|---|
attr(attrName) | 返回第一个匹配元素的属性值 |
attr(attrName, attrValue) | 为所有匹配元素设置一个属性值 |
attr({k1: v1, k2:v2}) | 为所有匹配元素设置多个属性值 |
removeAttr() | 从每一个匹配的元素中删除一个属性 |
prop() | 获取属性 |
removeProp() | 移除属性 |
在1.x及2.x版本的jQuery中使用attr对checkbox进行赋值操作时会出bug,在3.x版本的jQuery中则没有这个问题。为了兼容性,我们在处理checkbox和radio的时候尽量使用特定的prop(),不要使用attr("checked", "checked")
-
prop 与 attr的区别
-
二者虽然都是属性,但他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是DOM对象属性,可以认为attr是显式的,而prop是隐式的。
-
prop不支持获取标签的自定义属性
-
对于标签上有的能看到的属性和自定义属性都用attr
-
对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。
-
文档处理
方法 | 作用 |
---|---|
$(A).append(B) | 把B追加到A |
$(A).prepend(B) | 把B前置到A |
$(A).after(B) | 把B放到A的后面 |
$(A).before(B) | 把B放到A的前面 |
remove() | 从DOM中删除所有匹配的元素。 |
empty() | 删除匹配的元素集合中所有的子节点。 |
-
事例方法
1.替换: replaceWith() replaceAll() 2.克隆 clone()
克隆事例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <style> #b1 { background-color: deeppink; padding: 5px; color: white; margin: 5px; } #b2 { background-color: dodgerblue; padding: 5px; color: white; margin: 5px; } </style> </head> <body> <button id="b1">小趴菜</button> <hr> <button id="b2">你才是小趴菜</button> <script> // clone方法不加参数true,克隆标签但不克隆标签带的事件 $("#b1").on("click", function () { $(this).clone().insertAfter(this); }); // clone方法加参数true,克隆标签并且克隆标签带的事件 $("#b2").on("click", function () { $(this).clone(true).insertAfter(this); }); </script> </body> </html>
jQuery事件
jQuery绑定事件
jQuery绑定事件与js绑定事件操作不同,执行的时候需要分清
-
js绑定事件操作
标签对象.on事件名 = function(){事件代码} btnEle.onclick = function(){alert(123)}
-
jQuery绑定事件
方式1 jQuery对象.事件名(function(){事件代码}) $btnEle.click(function(){alter(123)}) 方式2 jQuery对象.on('事件名',function(){事件代码}) $btnEle.on('click',function(){alter(123)})
有时候使用jQuery的方式1绑定事件如果无法触发 可以切换为方式2
移除事件
移除事件是用off()方法来移除用 .on() 绑定的事件处理程序
-
移除事件的语法
jQuery对象.off('事件名',function(){事件代码}) 举例: $btnEle.off('click',function(){alter(123)})
阻止后续事件
-
触发form表单提交数据动作的标签
1. <input type="submit"> 2. <button></button>
给已经有事件的标签绑定事件 会先执行绑定的 再去执行默认的
我们也可以让标签之前的事件不执行 -
阻止表单提交的方法
-
return false
-
e.preventDefault();
-
-
阻止默认表单的实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> </head> <body> <form action=""> <p>username:<input type="text" name="username"></p> <input type="submit" value="提交"><button>按我</button> <script> $(':submit').click(function (e){ alert('一定要细心 千万不要慌!!!') // return false e.preventDefault() }) </script> </form> </body> </html>
事件冒泡
当涉及到标签嵌套并且有相同事件的时候,会逐级往上反馈并执行
-
事件冒泡的处理方法
$("span").click(function (e) { alert("span"); return false; 方式1 e.stopPropagation(); 方式2 });
-
阻止事件冒泡的例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>阻止事件冒泡</title> </head> <body> <div> <p> <span>点我</span> </p> </div> <script src="jquery-3.3.1.min.js"></script> <script> $("span").click(function (e) { alert("span"); e.stopPropagation(); }); $("p").click(function () { alert("p"); }); $("div").click(function () { alert("div"); }) </script> </body> </html>
事件委托
-
创建标签的方式
创建标签的方式 操作 JS document.createElement() jQuery $('<标签名>') 事件绑定默认情况下是不会对动态创建的标签生效的 如果想生效需要事件委托
-
事件委托实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> </head> <body> <div> <button>点我123</button> <button>点我321</button> </div> <script> // $('button').click(function () { // alert('button按钮 天下无敌') // }) $('div').on('click','button',function () { alert('你犯困的样子萌萌哒') }) </script> </body> </html>
委托指得是标签内部的标签
-
标签中的每一个按钮都能触发相应的事件
$("table").on("click", ".delete", function () { 所触发的事件 })
动画效果
-
实现动画效果的方法
方法 作用 $("标签").show([s,[e],[fn]]) 显示被选元素 $("标签").hide( ) 隐藏被选元素 $("标签").toggle( ) hide() 和 show() 方法之间的切换 $("标签").slideDown( ) 通过调整高度来滑动显示被选元素 $("标签").slideUp( ) 通过调整高度来滑动隐藏被选元素 $("标签").slideToggle( ) slideUp() 和 slideDown() 方法之间的切换 $("标签").fadeIn( ) 逐渐改变被选元素的不透明度,从隐藏到可见 $("标签").fadeOut( ) 逐渐改变被选元素的不透明度,从可见到隐藏 $("标签").fadeTo( ) 把被选元素逐渐改变至给定的不透明度 $("标签").fadeToggle( ) 在 fadeIn() 和 fadeOut() 方法之间进行切换 $("标签").animate( p,[s],[e],[fn]) 自定义动画效果 -
参数(p,[s,[e],[fn]])分别代表的意思
1.p<==>params:一组包含作为动画属性和终值的样式属性和及其值的集合
2.s<==>speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值
3.[en]<==>easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"
4.[fn]:在动画完成时执行的函数,每个元素执行一次。
()内一般放毫秒数值即可, 在该时间内完成动态收缩该块级标签
-
-
自定义动画示例——点赞
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>点赞动画示例</title> <style> div { position: relative; display: inline-block; } div>i { display: inline-block; color: red; position: absolute; right: -16px; top: -5px; opacity: 1; } </style> </head> <body> <div id="d1">点赞</div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> <script> $("#d1").on("click", function () { var newI = document.createElement("i"); newI.innerText = "+1"; $(this).append(newI); $(this).children("i").animate({ opacity: 0 }, 5000) }) </script> </body> </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)