python之路18:jQuery

概述

jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对javascript进行了封装,是更加便捷的开发,并且在兼容性方面十分优秀。如何使用jQuery?导入jQuery文件,如<script src="jquery-3.2.1.js"></script>或者<script src="jquery-3.2.1.min.js"></script> (min代表压缩版)

它分以下几部分:

  1. 选择器和筛选
  2. 属性
  3. css
  4. 文档处理
  5. 事件
  6. 扩展
  7. ajax
选择器
1、基本选择器
- ID选择器 $("#id的值")
- 类选择器(class) $(".class的值")
- 标签选择器(html标签) $("标签的名字")
- 所有标签 $("*")
- 组合选择器 $("xx,xxx")
 2、层级选择器
- 从一个标签的子子孙孙去找 $("父亲 子子孙孙")
- 从一个标签的儿子里面找 $("父亲>儿子标签")
- 找紧挨着的标签 $("标签+下面紧挨着的那个标签")
- 找后面所有同级的 $("标签~兄弟")
筛选器
- 写在引号里面的
基本筛选器
  $(" :first") 找第一个
  $(" :not('')") 不是/非
  $("#i1>input":not('.c1,.c2'))
  $(" :even") 偶数
  $(" :odd") 奇数
  $(" :eq(index)") 找等于index的
  $(" :gt(index)") 找大于index的
  $(" :lt(index)") 找小于index的
  $(" :last") 最后一个
  $(" :focus") 焦点

 

       内容==========
  $(" .c1:contains('我是第一个')") 包含文档的内容的标签
  $(" :empty") 标签内容为空的
  $(" :has('')") 包含标签的标签
  $(" :parent") 找有孩子的父亲
  $("#i7").parent() 找i7的父亲

可见性========
  $(" :hidden") 找到隐藏的
  $(" :visible") 找不隐藏的,也就是显示的
  属性==========
  input[name] --> 找有name属性的input
  input[type='password'] --> 类型是password的input标签
表单==========
   :input
  :password
  :checkbox
   :radio
  :submit
   :button
  :image
  :file

表单对象属性=========
:enable 可选的
:disable 不可选
:checked 选中的
:selected 下拉框选中
- 写在信号外面当方法用的
过滤===========
$("").first() 找第一个
$("").parent() 找父亲
$("").eq(index) 找等于index的
.hasClass() 判断有没有某个类的
查找
.children() 找孩子
.find() 查找
.next() 下面的
.nextAll() 下面所有的
.nextUntil() 找下面的直到找到某个标签为止

.parent() 找父亲
.parents() 找所有的父亲
.parentsUntil() 直到找到你要找的那个父亲为止

.prev() 上面的
.prevAll() 上面的所有
.prevUntil() 上面的直到找到某个标签为止
.siblings() 所有的兄弟

toggleClass()  切换|开关:有就移除,没有就添加

addClass("hide")  添加类

removeClass("hide") 删除类

jQuery对象:
用jQuery选择器查出来的就是jQuery对象,它只能使用jQuery方法,不能使用DOM的方法。

DOM对象和jQuery对象转换:
- $(".c1")[0] --> DOM对象
- $(DOM对象)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>开关</title>
 6     <style>
 7         .c1 {
 8             width: 200px;
 9             height: 200px;
10             border: 1px solid grey;
11             border-radius: 50%;
12             display: inline-block;
13         }
14 
15         .c2 {
16             background-color: red;
17         }
18     </style>
19 </head>
20 <body>
21 <div class="c1"></div>
22 <button class="btn">按钮</button>
23 <script src="jquery-3.4.1.js"></script>
24 <script>
25     //    找到button添加事件
26     $(".btn").on('click', function () {
27         //当点击的时候让变色
28         $(".c1").toggleClass('c2')
29     });
30 
31 </script>
32 </body>
33 </html>
开关按钮

属性

属性(如果你的选择器选出了多个对象,那么默认只会返回出第一个属性)、

attr(属性名|属性值)
- 一个参数是获取属性的值,两个参数是设置属性值
- 点击加载图片示例
removeAttr(属性名)
-删除属性的值
prop(属性名|属性值)
- 属性的返回值的是布尔类型
- 单选,反选,取消的例子
removeProp(属性名)
-删除属性的值

循环:each(两种循环示例)
- $.each(数组/对象, function(i, v){})
- $("div").each(function(){})
CSS类
- addClass 添加类属性
- removeClass 移除类属性
- toggleClass 开关|切换(有就移除,没有就添加)

HTML代码/文本/值
没有参数就是获取对应的值,
有参数就设置对应的值
- .html() 添加html标签 .html("<span>啦啦啦。</span>")
- .text() 添加文本 .text("啦啦啦。")
- .val()
input :一个参数,获取的是input框里面的值
checkbox :一个参数,获取的是value的值
select :
单选:获取值
多选:得到的是一个数组,设置的时候也要是数组
文档操作
CSS
.css()
- .css("color") -> 获取color css值
- .css("color", "#ff0000") -> 设置值
- .css({"color": "#cccccc", "border": "1px solid #ff0000"}) -> 设置多个值
- .css(["color", "border"]) -> 获取多个值
.offset
- 获取相对位置
- 比较的对象是html (窗口)
.position
- 获取相对已经定位的父标签的位置
- 比较的是最近的那个做过定位的祖先标签
.scrollTop([val])
- 返回顶部的例子
.scrollLeft([val])
尺寸:
height([val|fn])
- 元素的高度
width([val|fn])
- 元素的宽度
innerHeight()
- 带padding的高度
innerWidth()
- 带padding的宽度
outerHeight([soptions])
- 在innerHeight的基础上再加border的高度
outerWidth([options])
- 在innerHeight的基础上再加border的高度

文档操作
内部插入
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的前面

包裹
wrap(html|ele|fn)
A.wrap(B) --> B包A
unwrap() 不抱
- 不要加参数

wrapAll(html|ele) 都包(作为整体包),只包你选中的那个
wrapInner(html|ele|fn) 里面包
替换
replaceWith(content|fn)
A.replaceWith(B) --> B替换A

replaceAll(selector)
A.replaceAll(B) --> A替换B

删除
empty()
- 清空 内部清空
remove([expr])
- 删除 整体都删除
detach([expr])
- 剪切 多保存在变量中,方便再次使用
克隆/复制
clone([Even[,deepEven]])

动画
基本
show([s,[e],[fn]])
hide([s,[e],[fn]])
toggle([s],[e],[fn])
滑动
slideDown([s],[e],[fn])
slideUp([s,[e],[fn]])
slideToggle([s],[e],[fn])
淡入淡出
fadeIn([s],[e],[fn])
fadeOut([s],[e],[fn])

fadeTo([[s],o,[e],[fn]])
- 淡出到0.66透明度
fadeToggle([s,[e],[fn]])
- .fadeToggle(3000, function () {
alert("真没用3");
});
自定义
animate(p,[s],[e],[fn])1.8*
- css属性值都可以设置
- 图片变小(漏气)

事件处理

之前绑定事件的方式:
1. onclick=clickMe(); function clickMe() {}
2. ele.onclick = function(){}
3. ele.addEventListener("click", function(){}) js事件委派

jQuery绑定事件的方式:
1. $(ele).on("click", function(){})
2. $("tbody").delegate(".btn-warning", "click", function(){}) 这个3.几的版本没有这个方法了,这是3.几以前版本有的方法
3. $("tbody").on("click",".btn-warning",function(){}) jQuery的事件委派
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         .back{
 8             position: fixed;
 9             bottom: 0px;
10             right: 0px;
11         }
12         .hide{
13             display: none;
14         }
15     </style>
16 </head>
17 <body>
18 
19 <div style="height: 2000px;"></div>
20 
21 <div onclick="GoTop()" class="back hide">返回顶部</div>
22 
23 <script src="jquery-1.8.2.js"></script>
24 <script type="text/javascript">
25 
26     function GoTop(){
27         //返回顶部
28         $(window).scrollTop(0);
29     }
30 
31     $(function(){
32 
33         $(window).scroll(function(){
34             //当滚动滑轮时,执行函数体
35 
36             //获取当前滑轮滚动的高度
37             var top = $(window).scrollTop();
38 
39             if(top>100){
40                 //展示“返回顶部”
41                 $('.back').removeClass('hide');
42             }else{
43                 //隐藏“返回顶部”
44                 $('.back').addClass('hide');
45             }
46         });
47     });
48 
49 </script>
50 
51 </body>
52 </html>
53 
54 dem0
返回顶部
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset='utf-8'/>
 5     <title></title>
 6     <script type="text/javascript" src='jquery-3.4.1.js'></script>
 7     <script type="text/javascript">
 8         $(function () {
 9             $('#selectAll').click(function () {
10                 $('#checklist :checkbox').prop('checked', true);
11             })
12             $('#unselectAll').click(function () {
13                 $('#checklist :checkbox').prop('checked', false);
14             })
15             $('#reverseAll').click(function () {
16                 $('#checklist :checkbox').each(function () {
17                     $(this).prop('checked', !$(this).prop('checked'))
18                 })
19             })
20 
21         })
22     </script>
23 </head>
24 <body>
25 <div id='checklist'>
26     <input type='checkbox' value='1'/>篮球
27     <input type='checkbox' value='2'/>足球
28     <input type='checkbox' value='3'/>羽毛球
29 </div>
30 <input type='button' value='全选' id='selectAll'/>
31 <input type='button' value='不选' id='unselectAll'/>
32 <input type='button' value='反选' id='reverseAll'/>
33 </body>
34 </html>
全选反选
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>css示例</title>
 6 </head>
 7 <style>
 8     .c2 {
 9         width: 100px;
10         height: 100px;
11         background-color: red;
12         position: relative;
13         top: 50px;
14         left: 50px;
15     }
16 
17     .c3 {
18         width: 100px;
19         height: 100px;
20         background-color: greenyellow;
21         position: absolute;
22         left: 100px;
23         top: 100px;
24 
25     }
26 </style>
27 <body>
28 <div class="c1">你好</div>
29 <div class="c4">你好呀</div>
30 <div class="c2">
31     <div class="c3"></div>
32 </div>
33 
34 <script src="jquery-3.4.1.js"></script>
35 <script>
36     //  1、  .css()
37     $(".c1").css("color", "#336699");//找到标签,设置单个样式
38     console.log($(".c1").css("color"));//获取color css值
39     $(".c4").css({"color": "red", "border": "1px solid green", "font-size": "20px"});//设置多个样式
40     console.log($(".c4").css(["color", "border", "font-size"]))
41     //    2、offset
42     console.log($(".c2").offset());
43     console.log($(".c2").offset().left);
44     console.log($(".c2").offset().top);
45 
46     console.log($(".c3").offset()); //{top: 107, left: 58}
47     console.log($(".c3").position());//{top: 100, left: 100}
48 
49 </script>
50 </body>
51 </html>
css实例
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>文档操作</title>
 6 </head>
 7 <ul id="u1">
 8     <li>111</li>
 9     <li>222</li>
10     <li>333</li>
11     <li>444</li>
12 </ul>
13 <p>文档</p>
14 <ul id="u2">
15     <li>第一章</li>
16     <li>第二章</li>
17     <li>第三章</li>
18     <li>第四章</li>
19 </ul>
20 <body>
21 <script src="jquery-3.4.1.js"></script>
22 <script>
23     //    在内部插入
24     //      append:往后添加
25     $("#u1").append("<li>456</li>");
26     var li = document.createElement("li");
27     $(li).text(666);
28     $(li).appendTo($("#u1"));
29     $("#u1>li:first").appendTo($("#u1")); //吧第一个添加到这个列表中。注意是挪动,不是复制
30     $("#u1>li:last").appendTo($("#u1"));
31     //      prepend :往前添加
32     $("#u2").prepend("<li>啦啦啦</li>");  //吧啦啦啦添加到列表的前面
33 
34     var tem = document.createElement("li");
35     tem.innerText = "哗啦啦。呼啦啦";
36     $(tem).prependTo($("#u2"));//吧啦啦啦添加到列表里(先创建)
37 
38     //    在外部插入
39     //    after
40     $("#u2").after("<div>好好</div>");  //在列表的后面插入
41 
42     var tem = document.createElement("div");
43     $(tem).text("哎呀");
44     $(tem).css("color", "red");
45     $(tem).insertAfter($("#u2"));  //插入到列表的后面
46     //    before
47     $("#u2").before("<div>111</div>");  //在列表的前面插入
48 
49     var tem = document.createElement("div");
50     $(tem).text("six");
51     $(tem).css("color", "blue");
52     $(tem).insertBefore($("#u2"))  //插入到列表的后面
53 
54     //    包裹
55     // wrap和unwrap
56     var tem = document.createElement("div");
57     $(tem).css("border", "1px solid #ff0000");
58     $("#u1").wrap($(tem));  //让tem吧列表包起来
59     $("#u1").unwrap();//不包,不需要加参数
60     //    wrapAll和wrap和wrapInner
61     var tem = document.createElement("div");
62     $(tem).css("border", "1px solid yellow");
63     $("ul").wrapAll($(tem)); //都包
64     $("ul").wrap($(tem)); //单个包
65     $("ul").wrapInner($(tem));//里面包
66 
67     //    替换
68     //    replaceWith和replaceAll
69     $("ul").replaceWith("<p>你愁啥?<p>");//吧所有的列表替换成你愁啥?
70 
71     var ele = document.createElement("p");
72     $(ele).text("你愁啥?");
73     $(ele).replaceAll($("ul"));
74 
75     //    删除
76     $("ul:first").empty();//吧第一个ul清空
77     $("ul>li:first").empty();//只是清空内容
78     $("ul>li:last").remove();//都清空
79 
80     var a = $("#u1>li:first").detach();  //删除以后还保留着,可以再次使用
81     a.appendTo($("#u1"))
82 </script>
83 </body>
84 </html>
文档操作

事件

常用事件
blur([[data],fn]) 失去焦点
focus([[data],fn]) 获取焦点( 搜索框例子)
change([[data],fn]) 当select下拉框中的元素发生改变的时候触发change事件(select例子)
click([[data],fn]) 点击
dblclick([[data],fn]) 双击
scroll([[data],fn]) 滚动
submit([[data],fn]) 提交

不常用事件
error([[data],fn])
focusin([data],fn)
focusout([data],fn)
keydown([[data],fn]) 按下
keypress([[data],fn]) 按键
keyup([[data],fn]) 键松开
mousedown([[data],fn]) 鼠标按下
mouseenter([[data],fn]) 鼠标移进去
mouseleave([[data],fn]) 鼠标离开:只有鼠标离开被选元素的时候,才会触发mouseleave事件
mousemove([[data],fn]) 鼠标移动
mouseout([[data],fn]) 鼠标离开:无论鼠标离开被选元素还是任何子元素,都会触发mouseout事件
mouseover([[data],fn] 鼠标悬停
mouseup([[data],fn]) 鼠标弹起
resize([[data],fn]) 元素窗口发生变化
select([[data],fn])
unload([[data],fn])
补充:
文档树加载完之后绑定事件(绝大多数情况下)
第一种:吧script放在后面。
第二种:
$(document).ready(function(){
// 绑定事件的代码
....
})

简写:
$(function($){
// 绑定事件的代码
....
});
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>onmouse事件</title>
 6     <style>
 7         .box {
 8             width: 300%;
 9             height: 200px;
10         }
11 
12         .title {
13             background: steelblue;
14             line-height: 40px;
15         }
16 
17         .con {
18             background: slategray;
19             line-height: 30px;
20         }
21 
22         .hide {
23             display: none;
24         }
25     </style>
26 </head>
27 <body>
28 <div class="box">
29     <div class="title">onmouse</div>
30     <div class="con hide">
31         <div><a href="" class="item">你好吗?</a></div>
32         <div><a href="" class="item">我好啊</a></div>
33         <div><a href="" class="item">好就好</a></div>
34     </div>
35 </div>
36 <script>
37     var ele_title = document.getElementsByClassName('title')[0];
38     var ele_box = document.getElementsByClassName('box')[0];
39     //鼠标指上去的事件
40     ele_title.onmouseover = function () {
41         this.nextElementSibling.classList.remove('hide');
42     };
43     //鼠标移走的事件的两种方式
44     //    方式一(推荐)
45     ele_box.onmouseleave = function () {
46         ele_title.nextElementSibling.classList.add('hide');
47     };
48     //    方式二
49     //    ele_title.onmouseout = function () {
50     //       this.nextElementSibling.classList.add('hide');
51     //    }
52     //    方式一和方式二的区别:
53     //    不同点
54     //      onmouseout:不论鼠标指针离开被选元素还是任何子元素,都会触发onmouseout事件
55     //      onmouseleave:只有在鼠标指针离开被选元素时,才会触发onmouseleave事件
56     //    相同点:都是鼠标移走触发事件
57 </script>
58 </body>
59 </html>
onmouse事件

 

参考: 

http://www.cnblogs.com/alex3714

http://www.cnblogs.com/wupeiqi

internet&python books

PS:如侵权,联我删。

 

 

posted on 2019-09-02 12:26  BillyLV  阅读(204)  评论(0编辑  收藏  举报

导航