@SovietPower
2021-10-27T22:58:03.000000Z
字数 7221
阅读 1193
学习笔记
作业部落链接:https://zybuluo.com/SovietPower/note/1826585
参考:
https://www.runoob.com/jquery/jquery-tutorial.html
https://www.w3school.com.cn/jquery/index.asp
jQuery API:https://api.jquery.com/fadein/
目前:https://www.runoob.com/jquery/jquery-dom-get.html
jQuery是一个JavaScript函数库,为一个.js
文件,包含了许多插件和功能:HTML元素选取及操作,CSS操作,HTML事件函数,JS特效及动画,DOM遍历和修改,AJAX,Utilities。
jQuery 1.x版本最常用。一般使用该版本即可。
jQuery 2.0及以上版本不再支持IE 6/7/8。很少会使用。
jQuery 3.0及以上版本只支持最新的浏览器和jQuery插件。若非特殊需求不会使用。
通过HTML条件注释可实现:在使用IE 6/7/8时使用jQuery 1.9,否则使用jQuery 2.0:
<!--[if lt IE 9]>
<script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="jquery-2.0.0.js"></script>
<!--<![endif]-->
在 https://jquery.com/download/ 中可下载两个版本的jQuery库:
min
)。将该文件放在当前网页的目录中,在HTML中使用<script>
即可使用该文件:
<head>
<script src="jquery-3.6.0.min.js"></script>
</head>
通过内容分发网络(CDN),可以不需本地下载就使用jQuery。
Staticfile CDN、百度、新浪、又拍云、谷歌、微软的服务器都存有jQuery以供引用。
注:
jQuery 2.0及以上版本不再支持IE 6/7/8。
jQuery 3.0及以上版本要使用官网链接,其他平台暂未同步。
如3.3.1版本要使用:<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
用户在访问其他站点时,通常已经从百度、又拍云等以上服务器中加载过jQuery。若你也使用这些服务器,当用户访问你的站点时,可从缓存中加载jQuery,以减少加载时间。此外,大多数CDN都可确保当用户向其请求文件时,会从离用户最近的服务器上返回响应,以提高加载速度。
例:
从百度引用jQuery:
<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> <!-- or 1.11.3 -->
</script>
</head>
<script src="//apps.bdimg.com/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
// window.alert("Load jQuery failed.");
document.write(unescape("%3Cscript src='/skin/mobile/js/jquery.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
通过jQuery,可以选取HTML元素,并对其进行操作。
基本语法:$(selector).action()
使用
$
定义jQuery,选择器(selector)查找并选取HTML元素,action()
执行对元素的操作。
若选择器选取了多个元素,则它们会依次全部执行action()
。
所有要立刻执行的jQuery函数应放在函数$(document).ready()
中,以避免网页在完全加载之前运行jQuery代码,或在DOM加载完成之前对DOM进行操作,导致操作失败。
如:
$(document).ready(function(){
// write your jQuery codes...
});
// 上面函数的简洁写法:
$(function(){
// write your jQuery codes...
});
函数$(document).ready()
称为jQuery的入口函数。
JS的入口函数为window.onload()
:
window.onload = function() {
// write your JavaScript codes...
}
两函数的区别:
$(document).ready()
:等待HTML的所有标签(DOM结构)加载完毕后,就执行。可执行多次,后续的执行不会覆盖之前的执行。
window.onload()
:等待网页全部加载完毕后(包括外部图片等),才执行。只可执行一次,若多次执行会导致前面的执行被覆盖。
jQuery选择器基于CSS,也包含:id选择器、类选择器、元素选择器等。与CSS相比,选择器使用格式$("selector")
。
$(this)
选取this
对象。
此外还有一些高级选择器。
以下为几类简单的选择器,根据id、类或元素名称选择元素:
选择器 | 例 | 例子描述 |
---|---|---|
$("#id") |
$("#para") |
选取所有id="para" 的元素 |
$(".class") |
$(".para") |
选取所有class="para" 的元素 |
$("*") |
$("*") |
选取页面所有元素 |
$("element") |
$("p") |
选取页面所有<p> 元素 |
$("element1, element2, ...") |
$("h1, h2") |
选取页面所有<h1>, <h2> 元素 |
更多选择器例子见:https://www.runoob.com/jquery/jquery-selectors.html
注意:
选择的是所有符合条件的元素,为一个list。选择元素需加索引。
输出该list,可查看该列表的详细信息。
https://www.runoob.com/jquery/jquery-dom-get.html
val()
:获取或设置元素的value
值。如:$("selector").val()
。
text()
:获取或设置元素的文本内容。如:$("p.para").text()
。
html()
:获取或设置元素的所有内容(包括HTML标签)。如:$("#qwq").html()
。
以上三个方法,若调用时包含参数,则可设置对应值为参数值,否则只返回对应值。
分别对应value, innerText, innerHTML
属性。见HTML笔记。
如:$("p.para").text("123")
设置"p.para"
之间的内容为文本123
。
attr("attr_name")
:获取元素的指定属性的值。如:$("#baidu").attr("href")
。
大多数DOM事件都有一个等效的jQuery方法。
常用事件:https://www.runoob.com/jquery/jquery-events.html
在 https://api.jquery.com/ 查看更详细的函数说明,如:https://api.jquery.com/hide/。
使用hide()
和show()
方法可隐藏/显示一个已显示/隐藏的HTML元素。
使用toggle()
可根据元素状态切换使用hide()
或show()
。
语法:
$(selector).hide([duration] [,easing] [,complete]);
$(selector).show([duration] [,easing] [,complete]);
$(selector).toggle([duration] [,easing] [,complete]);
参数:
duration
:可选。规定隐藏/显示的所需时间(决定速度),取值为毫秒数(数值)、"slow"、"normal"或"fast"。设置时间后,元素会逐渐进行改变。默认为400
。
easing
:可选。规定元素在变化时使用哪种缓动函数(easing function)。jQuery自身提供"linear"
和"swing"
两种取值,使用插件可获得更多选择。默认为swing
。
complete
:可选。隐藏或显示完成后要执行的函数名称。需设置duration
后才能设置。
判断一个元素是隐藏还是显示:
// 使用CSS
var display = $('#id').css('display') //获取display属性值
if (display=='block') {alert('已显示');}
if (display=='none') {alert('已隐藏');}
// 使用jQuery
var x = $("#id");
if ( x.is(":visible") ) {alert('已显示');}
if ( $("#id").is(":hidden") ) {alert('已隐藏');}
使用fadeOut()
和fadeIn()
方法可淡出/淡入一个已显示/隐藏的HTML元素。
使用fadeToggle()
可根据元素状态切换使用fadeOut()
或fadeIn()
。
与hide(), show()
基本相同。
语法:
$(selector).fadeIn([duration] [,easing] [,complete]);
$(selector).fadeOut([duration] [,easing] [,complete]);
$(selector).fadeToggle([duration] [,easing] [,complete]);
参数:
duration
:可选。规定隐藏/显示的所需时间(决定速度),取值为毫秒数(数值)、"slow"、"normal"或"fast"。设置时间后,元素会逐渐进行改变。默认为400
。
easing
:可选。规定元素在变化时使用哪种缓动函数(easing function)。jQuery自身提供"linear"
和"swing"
两种取值,使用插件可获得更多选择。默认为swing
。
complete
:可选。隐藏或显示完成后要执行的函数名称。需设置duration
后才能设置。
fadeTo()
可将元素渐变为给定的不透明度。
语法:
$(selector).fadeTo(duration, opacity [,complete]);
参数基本同
fadeIn()
。不同:
duration
:必填。
opacity
:必填,为要设置的透明度(取值为0~1,即完全透明~完全不透明)。
使用slideUp()
和slideDown()
方法可向上/向下滑动一个HTML元素(滑动会使元素隐藏,反向滑动会使元素显示)。
使用slideToggle()
可根据元素状态切换使用slideUp()
或slideDown()
。
与hide(), show()
基本相同。
语法:
$(selector).slideUp([duration] [,easing] [,complete]);
$(selector).slideDown([duration] [,easing] [,complete]);
$(selector).slideToggle([duration] [,easing] [,complete]);
参数:
duration
:可选。规定滑动动画的所需时间(决定速度),取值为毫秒数(数值)、"slow"、"normal"或"fast"。设置时间后,元素会逐渐进行改变。默认为400
。
easing
:可选。规定元素在变化时使用哪种缓动函数(easing function)。jQuery自身提供"linear"
和"swing"
两种取值,使用插件可获得更多选择。默认为swing
。
complete
:可选。滑动动画完成后要执行的函数名称。
使用animate()
创建自定义动画。
语法:
$(selector).animate(properties [,duration] [,easing] [,complete])
参数:
properties
:必须。为若干{}
包含的属性:值
对,表示动画会将元素变成什么样。
duration
:可选。规定动画的所需时间(决定速度),取值为毫秒数(数值)、"slow"、"normal"或"fast"。设置时间后,元素会逐渐进行改变。默认为400
。
easing
:可选。规定元素在变化时使用哪种缓动函数(easing function)。jQuery自身提供"linear"
和"swing"
两种取值,使用插件可获得更多选择。默认为swing
。
complete
:可选。动画完成后要执行的函数名称。
注:
默认情况下,所有HTML元素都有一个静态位置,无法移动。如需对位置进行操作,需把该元素的CSS position属性设置为relative
、fixed
或absolute
。
animate()
几乎可以操作所有CSS属性。但注意,在书写属性:值
对时,需使用Camel标记法书写属性名,而不是原属性名称。如padding-left
应写作paddingLeft
。
色彩动画并不包含在核心jQuery库中。要使用色彩动画,需在 https://plugins.jquery.com/ 下载color颜色动画插件。
例:
在动画中改变一个或多个属性
$("button").click(function(){
$("div").animate({
left:'250px',
opacity:'0.5',
height:'150px',
width:'150px'
});
});
定义相对当前值的修改
在属性值前使用+=
或-=
。
$("button").click(function(){
$("div").animate({
left:'250px',
height:'+=150px',
width:'+=150px'
});
});
定义特定值
动画属性值还可设为show
, hide
或toggle
,可显示/隐藏元素。
$("button").click(function(){
$("div").animate({
height:'toggle'
});
});
动画队列
可以在同一处定义多个animate()
调用。这些调用会被创建为一个动画队列,并被依次执行(前一个动画执行完毕后才执行下一个)。
jQuery自带一个Queue,是内部专门为动画服务的。
$("button").click(function(){
var div=$("div");
div.animate({height:'300px',opacity:'0.4'},"slow");
div.animate({width:'300px',opacity:'0.8'},"slow");
div.animate({height:'100px',opacity:'0.4'},"slow");
div.animate({width:'100px',opacity:'0.8'},"slow");
});
使用stop()
可在动画效果完成前停止该元素的动画。可用于停止所有jQuery效果函数。
语法:
$(selector).stop([clearQueue] [,jumpToEnd])
$(selector).stop([queue] [,clearQueue] [,jumpToEnd])
参数:
queue
:可选。可停止指定动画队列的动画。
clearQueue
:可选。是否清除当前的整个动画队列(即同时停止之后的所有动作)。默认为false
,即只停止当前动画,队列中的后续动画继续执行。
jumpToEnd
:可选。是否立即完成当前动画(即直接跳到动画结束时的状态)。默认为false
,即会在当前状态停止。
例:
$(document).ready(function(){
$("#flip").click(function(){
$("#panel").slideDown(5000);
});
$("#stop").click(function(){
$("#panel").stop();
});
});
通过链接(chaining),可以在一行内对一个选择器依次运行多条jQuery命令,而无需分多行写。
此外,浏览器还不需多次重复查找该元素。
语法:
$(selector).action1().action2().action3()...
例:
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
// 可以在代码中添加换行、缩进,以提高可读性(多余空白会被JS忽略)
$("#p1").css("color","red")
.slideUp(2000)
.slideDown(2000);