jQuery

发布时间 2024-01-02 11:53:25作者: Way*yy

jQuery快速入门

我们最好称之为是jQuery库更好一些,不要称之为是框架
# 库就类似于是Python中的模块,简称为jq
# jQuery就是js、css等的封装版本,只要一封装,写法肯定会简单


jQuery介绍
jQuery是一个轻量级的、兼容多浏览器的JavaScript库。# 他就是一个封装好的js文件,几十KB大小
# 前端的最大问题就是兼容性问题,需要兼容各个浏览器,这句话的意思就是以后你使用jQuery,就不用关心兼容性问题了,他们内部已经做好了.

"""
	1. 兼容性问题
	2. 响应式问题
"""
它的宗旨就是:“Write less, do more.“

jQuery的优势
1. 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。
2. 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。
3. 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
4. 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。
5. Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。
6. 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。

jQuery内容:
1. 选择器
2. 筛选器
3. 样式操作
4. 文本操作
5. 属性操作
6. 文档处理
7. 事件
8. 动画效果
9. 插件
10. each、data、Ajax

jQuery何如何使用
官方网站:https://jquery.com/
中文文档:https://jquery.cuishifeng.cn/

jQuery版本
● 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
● 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
● 3.x:不兼容IE678,只支持最新的浏览器。需要注意的是很多老的jQuery插件不支持3.x版。目前该版本是官方主要更新维护的版本。

# 我们主要学习jQuery3.x的版本
# 要https://www.bootcdn.cn/想使用jQuery,必须在文档中首先引入jQuery库文件,去哪里下载?
https://www.bootcdn.cn/------>下载jquery、bootstrap、vue等文件

    
"""
使用方式:
	1. 直接引入外链的js库
	2. 把jQuery文件直接下载到本地,通过本地引入, 推荐该方式
"""

什么是CDN:加快我们的加载文件的速度

image-20230724092949993

jQuery对象

1. jQuery对象:jQuery对象就是通过jQuery包装DOM对象后产生的对象
    		# 如果你是jQuery对象,那么就可以使用jQuery提供的很多方法
2. 标签对象:直接就是通过各种选择器得到的标签
    		# 标签对象不能够直接使用jQuery库提供的很多方法
        
    
$("#i1").html(); # 拿到id为i1的文本内容

$的含义
jQuery("#i1").html();
$("#i1").html();

# 以上两行代码的意思是一样的
jQuery === $

# 以后的代码里都使用$符号代替jQuery
jQuery基础语法
jQuery("selector").action();
$("selector").action();

# jQuery的学习步骤
1. 先学会如何查找标签
2. 找到标签之后再做相对于的操作

基本选择器

id、class、标签选择器
var div1 = $("#d1"); --------------------->S.fn.init [div#d1]-------->jQuery对象
var div = document.getElementById('d1');--->拿到的是一个标签对象
                                                      
# jQuery对象和标签对象之间的相互转换
jQuery对象转为标签对象----------------->直接通过索引取值得到标签对象
标签对象转为jQuery对象----------------->$(document.getElementById('d1')) --->使用jQuery把DOM抱起来--------------->就可以使用jQuery提供的方法了
                                                      
                                                      
var div = document.getElementsByClassName('c1')[0];
var div1 = $(".c1");
console.log(div1);
                                                      
var div = $('div');
console.log(div);    
                                                      
                                                      
# 配合使用的
$("div.c1")  // 找到有c1 class类的div标签
$('div#d1')
                                                      
# 通用选择器
$("*")

组合选择器:

$('#d1,.c1,p')  # 并列+混用
$('div span')  # 后代
$('div>span')  # 儿子
$('div+span')  # 毗邻
$('div~span')  # 弟弟

// console.log($("div.c1")[0]);
// console.log($("*"))
// console.log($("#d1,.c2,span"))
// console.log($("div span"))
// console.log($("div>span>span"))
// console.log($("div+span"))
// console.log($("div~span"))

基本筛选器

:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index) // 匹配所有大于给定索引值的元素 # gt ---> greater than
:lt(index) // 匹配所有小于给定索引值的元素 # lt----> less than
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
    
<div id="d1" class="c2">divide1</div>
<div id="d2" class="c2">divide2</div>
<div id="d3" class="c2">divide2</div>
<div id="d4" class="c2">divide2</div>
<div id="d5" class="c2">divide2</div>
<span id="s2" class="c3">span1</span>
<span id="s3" class="c3">span2</span>
<span id="s4" class="c3">span3</span>
<span id="s5" class="c3">span3</span>
<span id="s6" class="c3">span3</span>
<script>
    // console.log($("span:first"))
    // console.log($("span:last"))
    // console.log($("span:eq(0)"))
    // console.log($(":even"))
    // console.log($(":odd"))
    // console.log($("div:gt(2)"))
    // console.log($("span:lt(2)"))
    // console.log($(":not(div)"))
    // console.log($(":not(span)"))
</script>

属性选择器:

[attribute] //属性
[attribute=value]// 属性等于值
[attribute!=value]// 属性不等于值

<input type="text" name="kevin">
<input type="text" name="rous">
<input type="password" name="tank">
<input type="checkbox" name="jason">
<input type="radio" name="alex">

<script>
    console.log($("input[type='text']")) //属性是text的
    console.log($("input[type='checkbox']")) //属性是checkbox的
    console.log($("input[type!='text']")) //属性不是text的
</script>

表单筛选器

:text
:password
:file
:radio
:checkbox

:submit
:reset
:button
    
console.log($(":text")) //等价于console.log($("input[type='text']"))
console.log($(":reset")) //等价于console.log($("input[type='reset']"))

<!-------------------------------找到自己的想要的option--------------------------->
<select name="" id="s1">
    <option value="beijing" >北京</option>
    <option value="shanghai" >上海</option>
    <option value="shenzhen" >深圳</option>
    <option value="guangdong" >广东</option>
    <input type="radio" checked> 男
</select>
<script>
    console.log($(":selected")) //找到所有有默认值(selected)的
    console.log($(":checked")) //checked可以拿到checked和select而select只能拿到select
    console.log($("input:checked")) //加一个限制条件就可以拿到自己想要的了
</script>
<!------------------------------------------------------------------------------>

筛选器方法

下一个元素:
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2")


上一个元素:
# previous
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")

父亲元素:
# js: parentElement.parentElement.parentElement.parentElement

# jq:
$("#id").parent().parent().parent().parent().parent().parent().parent();
$("#id").parents()  // 查找当前元素的所有的父辈元素
$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。

儿子和兄弟元素:
# 儿子元素:children, siblings
# jq: 
$("#id").children()[0];// 儿子们
$("#id").siblings();// 兄弟们


查找(掌握)
$("div").find("p")----------------->等价于$("div p")
$("div p").find("a")----------------->等价于$("div p a")
$("#d1 .c1").find("a")----------------->等价于$("#d1 .c1 a")

补充:
.first() // 获取匹配的第一个元素
  	$('div span:first')-------------->$('div span').first()
.last() // 获取匹配的最后一个元素
      $('div span:last')----------------->$('div span').last()
.not() // 从匹配元素的集合中删除与指定表达式匹配的元素
      $('div span:not("#d3")') --------------->$('div span').not('#d3')
.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
.eq() // 索引值等于指定值的元素

$("ul li:eq(2)")--------------------------->$("ul li").eq(2);
$("div span:eq(2)")--------------------------->$("div span").eq(2);

操作标签

###################################都得会#########################################
# 样式操作
# classList.add、remove、containes、toggle
addClass();// 添加指定的CSS类名。
removeClass();// 移除指定的CSS类名。
hasClass();// 判断样式存不存在
toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。

# 文本操作
# js:innerText  innerHtml
html()// 取得第一个匹配元素的html内容
html(val)// 设置所有匹配元素的html内容

text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容

值:

###################################都得会#########################################

"""重要"""
属性操作:
    attr(attrName)// 返回第一个匹配元素的属性值
    attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
    attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
    removeAttr()// 从每一个匹配的元素中删除一个属性
# 用于checkbox和radio
prop和attr的区别:

"""记住:"""
如果你设置或者获取单选框和复选框的属性值的时候,就使用prop()
除此之外,获取属性和设置属性都使用attr()