jQuery库
一般称之为jQuery库,不要称为框架,
库类似于Python中的模块,简称jq
jQuery就是js、css等的封装版,只要已封装,写法肯定简单一些
jQuery介绍
jQuery是一个轻量级的、兼容多浏览器的JavaScript库。# 他就是一个封装好的js文件,几十KB大小
前端的最大问题就是兼容性问题,需要兼容各个浏览器,这句话的意思就是以后你使用jQuery,就不用关心兼容性问题了,他们内部已经做好了.
它的宗旨:“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何如何使用
官方网站:https://jquery.com/
中文文档:https://jquery.cuishifeng.cn/
https://www.bootcdn.cn/------>下载jquery、bootstrap、vue等文件
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版。目前该版本是官方主要更新维护的版本。
使用方式:
1. 直接引入外链的js库
2. 把jQuery文件直接下载到本地,通过本地引入, 推荐该方式
什么是CDN:加快我们的加载文件的速度
jQuery对象
1. jQuery对象:jQuery对象就是通过jQuery包装DOM对象后产生的对象
如果你是jQuery对象,那么就可以使用jQuery提供的很多方法
2. 标签对象:直接就是通过各种选择器得到的标签
标签对象不能够直接使用jQuery库提供的很多方法
$("#i1").html()的意思是:获取id值为 i1的元素的html代码。其中 html()是jQuery里的方法。
相当于: document.getElementById("i1").innerHTML;
虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。
$("#i1").html();拿到id为i1的文本内容
$的含义
jQuery("#i1").html();
$("#i1").html();
<body> <div id="d1" class="c1">你好呀</div> <script> var div=document.getElementById('d1').innerText //JS获取文本方法 console.log(div) var div1=$('#d1').html() //jQ获取文本方法 console.log(div1) </script> </body>
以上两行代码的意思是一样的
jQuery === $
以后的代码里都使用$符号代替jQuery
jQuery基础语法
jQuery("selector").action();
$("selector").action();
jQuery的学习步骤
1. 先学会如何查找标签
2. 找到标签之后再做相对于的操作
基本选择器
id 、class、标签选择器
var div1=$("#d1");------->s.fn.init[div#]------>jQuery对象 var div = document.getElementById('d1');--->拿到的是一个标签对象
jQuery对象和标签对象之间的相互转换
jQuery对象转为标签对象----------------->直接通过索引取值得到标签对象
标签对象转为jQuery对象----------------->$(document.getElementById('d1')) --->使用jQuery把DOM抱起来--------------->就可以使用jQuery提供的方法了
<body> <div id="d1" class="c1"></div> <div id="d2" class="c1"></div> <div id="d3" class="c1"></div> <script> var div1=document.getElementsByClassName('c1');//JS获取标签 console.log($(div1));JS转化为jQ var div2=$('.c1');jQ获取标签 console.log(div2) </script> </body>
配合使用
$("div.c1") // 找到有c1 class类的div标签
$('div#d1')// 找到有id为d1的div标签
通用选择器
#("*")
组合选择器
$("#id, .className, tagName") $('#d1,.c1,p') # 并列+混用 $('div span') # 后代 $('div>span') # 儿子 $('div+span') # 毗邻 $('div~span') # 弟弟
案例
<div id="d2" class="c2"></div> <div id="d3" class="c2"></div> <script> var div1 = $('#d1,.c1,div') // 并列+混用 console.log(div1) var sp = $('div span') // div的后代span console.log(sp) var sp1 = $('div>span') // div的儿子 console.log(sp1) var sp2 = $('#d1+div') //id为d1的div的邻居 console.log(sp2) var sp3 = $('#d1~div') //id为d1的div的兄弟 console.log(sp3) </script>
基本筛选器
:first // 第一个 :last // 最后一个 :eq(index)// 索引等于index的那个元素 :even // 匹配所有索引值为偶数的元素,从 0 开始计数 :odd // 匹配所有索引值为奇数的元素,从 0 开始计数 :gt(index) // 匹配所有大于给定索引值的元素 # gt ---> greater than :lt(index) // 匹配所有小于给定索引值的元素 # lt----> less than :not(元素选择器)// 移除所有满足not条件的标签 :has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找) 复制代码
案例
<body> <div id="d1"> <ul id="u1"> <li class="l1" id="l1">1</li> <li class="l1" id="l2">2</li> <li class="l1" id="l3">3</li> <li class="l1" id="l4">4</li> <li class="l1" id="l5">5</li> </ul> </div> <script> var ul1 = $("ul li:first") console.log(ul1) var ul2 = $("ul li:last") console.log(ul2) var ul3 = $("ul li:eq(2)") console.log(ul3) var ul4 = $("ul li:even") console.log(ul4) var ul5 = $("ul li:odd") console.log(ul5) var ul6 = $("ul li:gt(1)") console.log(ul6) var ul7 = $("ul li:lt(1)") console.log(ul7) var ul8 = $("ul li:not(#l1)") console.log(ul8) var ul9 = $("li:has(.l1)") console.log(ul9) </script> </body>
结果
属性选择器
[attribute]
[attribute=value]// 属性等于
[attribute!=value]// 属性不等于
案例
<body> <div> <input type="text" id="t1"> <input type="password" id="p1"> <input type="checkbox" id="c1"> </div> <script> var t = $("input[type='text']") console.log(t) var p= $("input[type!='text']") console.log(p) </script> </body>
结果
表单筛选器
:text :password :file :radio :checkbox :submit :reset :button
:enabled 可用的
:disabled 禁用的
:checked 单选框选定的
:selected 复选框选定的
案例
<body> <form action=""> <input type="text" id="i1" class="i1"> <input type="password" id="i2" class="i1"> <input type="file" id="i3" class="i1"> <input type="radio" id="i4" class="i1" checked>男 <input type="radio" id="i9" class="i1">女 <select id="s1"> <option value="beijing">北京市</option> <option value="shanghai" selected="selected">上海市</option> <option value="guangzhou">广州市</option> <option value="shenzhen">深圳市</option> </select> <input type="submit" id="i6" class="i1"> <input type="reset" id="i7" class="i1"> <input type="button" id="i8" class="i1"> </form> <script> console.log($(":checkbox")) console.log($("input[type='checkbox']")) console.log($("input:enabled")) console.log($("input:disabled")) console.log($(":selected")) // 找到所有被选中的option console.log($(':checked')) //它会将checked和selected都拿到 $(':selected') //它不会 只拿selected </script> </body>
结果
筛选器方法
下一个元素: $("#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();// 兄弟们
案例
<body> <div id="d1" class="c1"></div> <div id="d2" class="c1"></div> <div id="d3" class="c1"></div> <div id="d4" class="c1"></div> <div id="d5" class="c1"></div> <script> var d = $("#d1") console.log(d.next()) console.log(d.nextAll()) console.log(d.nextUntil()) console.log(d.parent()) console.log(d.parents()) console.log(d.children()) console.log(d.siblings()) </script> </body>
查找(掌握) $("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);
操作标签
样式操作
JS:classList.add、remove、containes、toggle
addClass();// 添加指定的CSS类名。
removeClass();// 移除指定的CSS类名。
hasClass();// 判断样式存不存在
toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。
文本操作
JS:innerText innerHtml
html()// 取得第一个匹配元素的html内容
html(val)// 设置所有匹配元素的html内容
text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容
案例
<input type="checkbox" value="basketball" name="hobby">篮球 <input type="checkbox" value="football" name="hobby">足球 <select multiple id="s1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select>
设置值:
$("[name='hobby']").val(['basketball', 'football']);
$("#s1").val(["1", "2"])
属性操作
attr(attrName)// 返回第一个匹配元素的属性值
attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
removeAttr()// 从每一个匹配的元素中删除一个属性
案例
<input type="checkbox" value="1"> <input type="radio" value="2"> <input type="checkbox" id="i1" value="1"> <script> $(":checkbox[value='1']").prop("checked", true); $(":radio[value='2']").prop("checked", true); </script> $("#i1").attr("checked") // undefined $("#i1").prop("checked") // false
记住
如果你设置或者获取单选框和复选框的属性值的时候,就使用prop()
除此之外,获取属性和设置属性都使用attr()
prop和attr的区别
attr全称attribute(属性)
prop全称property(属性)
虽然都是属性,但他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是DOM对象属性,可以认为attr是显式的,而prop是隐式的
标签:jQuery,console,入门,元素,var,div,快速,log From: https://www.cnblogs.com/shanghaipudong/p/17578057.html