继上文
##jQuery position() 方法:
定义和用法:
position() 方法返回第一个匹配元素的位置(相对于它的父元素)。
该方法返回一个带有两个属性(以像素为单位的 top 和 left 位置)的对象。
语法:
$(selector).position()
##scrollTop()、scrollLeft()
jQuery对象的标签的滚动条(垂直滚动条(Top)、水平滚动条(Left)):已经滚动过的距离
这里需要注意,如果对象的标签没有滚动条那么返回的值是0。该方法常用在获取窗口对象$(window)滚动条滚动的位置,通过位置来进行某些人性化设置网页效果。
捕捉滚动条离顶部的距离来判断返回顶部按钮的显示
<!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>
.c1 {
width: 100px;
height: 200px;
background-color: red;
}
.c2 {
height: 50px;
width: 50px;
position: fixed;
bottom: 15px;
right: 15px;
background-color: #2b669a;
}
.hide {
display: none;
}
.c3 {
height: 100px;
}
</style>
</head>
<body>
<button id="b1" class="btn btn-default">点我</button>
<div class="c1"></div>
<div class="c3">1</div>
<div class="c3">2</div>
<div class="c3">3</div>
<div class="c3">4</div>
<div class="c3">5</div>
<div class="c3">6</div>
<div class="c3">7</div>
<div class="c3">8</div>
<div class="c3">9</div>
<div class="c3">10</div>
<div class="c3">11</div>
<div class="c3">12</div>
<div class="c3">13</div>
<div class="c3">14</div>
<div class="c3">15</div>
<div class="c3">16</div>
<div class="c3">17</div>
<div class="c3">18</div>
<div class="c3">19</div>
<div class="c3">20</div>
<div class="c3">21</div>
<div class="c3">22</div>
<div class="c3">23</div>
<div class="c3">24</div>
<div class="c3">25</div>
<div class="c3">26</div>
<div class="c3">27</div>
<div class="c3">28</div>
<div class="c3">29</div>
<div class="c3">30</div>
<div class="c3">31</div>
<div class="c3">32</div>
<div class="c3">33</div>
<div class="c3">34</div>
<div class="c3">35</div>
<div class="c3">36</div>
<div class="c3">37</div>
<div class="c3">38</div>
<div class="c3">39</div>
<div class="c3">40</div>
<div class="c3">41</div>
<div class="c3">42</div>
<div class="c3">43</div>
<div class="c3">44</div>
<div class="c3">45</div>
<div class="c3">46</div>
<div class="c3">47</div>
<div class="c3">48</div>
<div class="c3">49</div>
<div class="c3">50</div>
<div class="c3">51</div>
<div class="c3">52</div>
<div class="c3">53</div>
<div class="c3">54</div>
<div class="c3">55</div>
<div class="c3">56</div>
<div class="c3">57</div>
<div class="c3">58</div>
<div class="c3">59</div>
<div class="c3">60</div>
<div class="c3">61</div>
<div class="c3">62</div>
<div class="c3">63</div>
<div class="c3">64</div>
<div class="c3">65</div>
<div class="c3">66</div>
<div class="c3">67</div>
<div class="c3">68</div>
<div class="c3">69</div>
<div class="c3">70</div>
<div class="c3">71</div>
<div class="c3">72</div>
<div class="c3">73</div>
<div class="c3">74</div>
<div class="c3">75</div>
<div class="c3">76</div>
<div class="c3">77</div>
<div class="c3">78</div>
<div class="c3">79</div>
<div class="c3">80</div>
<div class="c3">81</div>
<div class="c3">82</div>
<div class="c3">83</div>
<div class="c3">84</div>
<div class="c3">85</div>
<div class="c3">86</div>
<div class="c3">87</div>
<div class="c3">88</div>
<div class="c3">89</div>
<div class="c3">90</div>
<div class="c3">91</div>
<div class="c3">92</div>
<div class="c3">93</div>
<div class="c3">94</div>
<div class="c3">95</div>
<div class="c3">96</div>
<div class="c3">97</div>
<div class="c3">98</div>
<div class="c3">99</div>
<div class="c3">100</div>
<button id="b2" class="btn btn-default c2 hide">返回顶部</button>
<script src="jquery-3.2.1.min.js"></script>
<script>
$("#b1").on("click", function () {
$(".c1").offset({left: 200, top:200});
});
$(window).scroll(function () {
if ($(window).scrollTop() > 100) {
$("#b2").removeClass("hide");
}else {
$("#b2").addClass("hide");
}
});
$("#b2").on("click", function () {
$(window).scrollTop(0);
})
</script>
</body>
</html>
#尺寸:
height()
innerHeight()
outerHeight()
width()
innerwidth()
outerwidth()
$(’#p0’)height():(width宽度同理可知)
#文本操作:
HTML代码:
html()// 取得第一个匹配元素的html内容
html(val)// 设置所有匹配元素的html内容
文本值:
text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容
值:
val()// 取得第一个匹配元素的value属性的值
val(val)// 设置所有匹配元素value属性的值
val([val1, val2])// 设置多选的checkbox、多选select的value属性的值
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div class="d">我是第一个p标签
<input type="text" id="123" value="555">
<div>6666</div>
<p>啪啪啪啪</p>
</div>
<div class="d">我是第二个p标签
<p>嘿嘿嘿嘿</p>
</div>
</body>
</html>
#属性操作:
attr(attrName)// 返回第一个匹配元素的属性值
attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
removeAttr()// 从每一个匹配的元素中删除一个属性
#文档处理:
$(A).append(B)// 把B追加到A
$(A).appendTo(B)// 把A追加到B
$(A).prepend(B)// 把B前置到A
$(A).prependTo(B)// 把A前置到B
$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面
$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面
remove()// 从DOM中删除所有匹配的元素。
empty()// 删除匹配的元素集合中所有的子节点。
replaceWith()
replaceAll()
clone()// 参数
事件:(使用方法与JS对象类似,只是语法更加简洁)
#常用事件
click(function(){...})
hover(function(){...})
blur(function(){...})
focus(function(){...})
change(function(){...})
keyup(function(){...})
#事件绑定:
事件绑定
.on( events [, selector ],function(){})
events: 事件
selector: 选择器(可选的)
function: 事件处理函数
#移除事件:
.off( events [, selector ][,function(){}])
off() 方法移除用 .on()绑定的事件处理程序。
events: 事件
selector: 选择器(可选的)
function: 事件处理函数
#阻止后续事件执行:
- 有时候点击提交按钮会进行后续事件(将输入的文本提交到服务器、执行一些跳转操作…),但是如果输入文本为空提交时候,点击后没有通过验证的话,就不应该跳转。这时候可以通过设置event.preventDefault();或者return
false;来阻止默认行为 。
return false; // 常见阻止表单提交等
e.preventDefault();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>阻止默认事件</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<form action="">
<form action="">
<input type="text">
<input type="submit" id="d1">
</form>
</form>
<script>
$("#d1").click(function (e) {
alert(123); //点击提交按钮如果不做任何阻止动作,页面会将输入的文本发送到服务器,同时刷新页面清空输入框,但是如果阻止后续事件发生后就不会刷新页面,文本框也不会刷新。
// return false;
// e.preventDefault();
});
</script>
</body>
</html>
- #阻止事件冒泡:
- (冒泡:如果父、子、孙三个等级标签都包含同一类型的事件,那么在孙标签触发事件后,比如点击事件,由于点击的事件是在孙标签上面,但是孙标签又是子标签里面,子标签又是父标签内部,所以会连锁触发子与父标签的点击事件,导致连锁反应,这种过程就像一个水泡从下往上冒出水面的过程,俗称事件冒泡。具体可以看下面的代码示例,将e.stopPropagation()注释掉就会产生冒泡的情况。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>阻止事件冒泡</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div>
<p>
<span>点我</span>
</p>
</div>
<script>
$("span").click(function (e) { //注意这里一定要传个形参e
alert("span");
e.stopPropagation(); //这一步就阻止了点击事件上传给其父级标签的冒泡过程
});
$("p").click(function () {
alert("p");
});
$("div").click(function () {
alert("div");
})
</script>
</body>
</html>
#页面载入:
- 当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。
两种写法:
$(document).ready(function)(){
// 在这里些JS代码...
})
简写:
$(function(){
// JS代码...
})
!Tip:
与window.onload的区别:
## window.onload()函数有覆盖现象,必须等待着图片资源加载完成之后才能调用
## jQuery的这个入口函数没有函数覆盖现象,文档加载完成之后就可以调用(建议使用此函数
#事件委托:事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件。
$("table").on("click", ".delete", function () {
// 删除按钮绑定的事件
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<button>我是按钮</button>
<script>
// 事件委托
$('body').on('click','button',function () {
alert('通过body标签click事件,触发body内的子标签“button”的点击事件>>>委托')
})
</script>
</body>
</html>
#动画效果(动态效果):
speed:可选,规定显示效果的速度:(毫秒/"slow"/"fast")
easing:可选。规定在动画的不同点上元素的速度。默认值为 "swing"。
可能的值:
"swing" - 在开头/结尾移动慢,在中间移动快
"linear" - 匀速移动
提示:扩展插件中提供更多可用的 easing 函数。
callback:可选。show() 方法执行完之后,要执行的函数。
// 基本
show(speed,easing,callback)
hide(speed,easing,callback)
toggle(speed,easing,callback)
// 滑动
slideDown(speed,easing,callback)
slideUp(speed,easing,callback)
slideToggle(speed,easing,callback)
// 淡入淡出
fadeIn(speed,easing,callback)
fadeOut(speed,easing,callback)
fadeTo(speed,opacity,easing,callback) //speed(必须) opacity透明度(必须参数)
fadeToggle(speed,easing,callback)
// 自定义(了解即可)
animate(p,speed,easing,callback)
以下为补充内容:
#jQuery.each(collection, callback(indexInArray, valueOfElement)):
描述:一个通用的迭代函数,它可以用来无缝迭代对象和数组。数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1。其他对象通过其属性名进行迭代。
li =[10,20,30,40]
$.each(li,function(i, v){
console.log(i, v);//index是索引,ele是每次循环的具体元素。
})
输出:
010
120
230
340
.each(function(index, Element)):
描述:遍历一个jQuery对象,为每个匹配元素执行一个函数。.
each 方法用来迭代jQuery对象中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。由于回调函数是在当前DOM元素为上下文的语境中触发的,所以关键字this总是指向这个元素。
// 为每一个li标签添加foo
$("li").each(function(){
$(this).addClass("c1");
});
注意: jQuery的方法返回一个jQuery对象,遍历jQuery集合中的元素 - 被称为隐式迭代的过程。当这种情况发生时,它通常不需要显式地循环的.each()方法:
也就是说,上面的例子没有必要使用each()方法,直接像下面这样写就可以了:
$("li").addClass("c1"); // 对所有标签做统一操作
注意:
在遍历过程中可以使用return false提前结束each循环。
.data()
在匹配的元素集合中的所有元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。
.data(key, value):
描述:在匹配的元素上存储任意相关数据。
$("div").data("k",100);//给所有div标签都保存一个名为k,值为100
.data(key):
描述: 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值—通过.data(name,value)或HTML5 data-*属性设置。
$("div").data("k");//返回第一个div标签中保存的"k"的值
.removeData(key):
描述:移除存放在元素上的数据,不加key参数表示移除所有保存的数据。
$("div").removeData("k"); //移除元素上存放k对应的数据