27、Python之jQuery基础

一、jQuery基础

  jQuery是一个类库,类似于python中的模块,其封装了JavaScript对dom的操作,我们使用jQuery可以用更少的代码完成复杂的场景,而jQuery的内部本质上也是dom的操作。jQuery类库有3个系列,可以去jQuery的官网进行下载,然后使用<script src="jQuery的路径"></script>导入到我们的项目中,就可以使用了jQuery了。jquery的中文手册地址是:http://jquery.cuishifeng.cn/

1、jQuery对象和document对象的转换

       jQuery[0]  =====>  Dom对象

         Dom对象  ======>$(Dom对象)   调用jQuery类库时使用$符或jQuery。

2、元素查找

  jQuery中常见的元素查找有:id,class,标签查找,组合查找,层级查找,基本查找,属性查找,表单查找,表单对象查找等,基本使用如下;

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div id="id">hello jquery
 9         <div class="c1">
10             <a></a>
11         </div>
12         <a></a>
13         <label>123</label>
14         <a id="a11">456</a>
15     </div>
16     <a id="a1">hello</a>
17     <a age></a>
18     <a age="18"></a>
19 
20     <form id="f1">
21         <input type="text"/>
22         <input type="password"/>
23         <input type="checkbox"/>
24         <input type="button"value="按钮">
25     </form>
26 <script src="jquery-3.3.1.js">
27 
28 </script>
29 <script>
30     $('#id');//id查找
31     $('.c1');//class查找
32     $('div');//标签查找
33     $('#id,.c1,a');//组合查找
34     //----层级查找
35     $('#id a');//查找子子孙孙
36     $('#id>a');//查找儿子
37     //---基本查找
38     $('#id>a:first');
39     $('#id>a:last');
40     $('#id>a:eq(1)');
41     //----属性查找
42     $('[age]');
43     $('[age="18"]');
44     //表单查找
45     $(':text');
46     $(':password');
47     $(':checkbox');
48     $(':button');
49     //表单对象属性查找
50     $(':checked'); //查找所有被选中的checkbox
51 </script>
52 </body>
53 </html>
View Code

  jQuery实现多选,反选,取消操作实例。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <table id="tb" border="1" cellspacing="0" style="width: 300px">
 9         <thead>
10             <th>操作</th>
11             <th>IP</th>
12             <th>PORT</th>
13         </thead>
14         <tbody>
15             <tr>
16                 <td><input type="checkbox"/></td>
17                 <td>1.1.1.1</td>
18                 <td>8080</td>
19             </tr>
20             <tr>
21                 <td><input type="checkbox"/></td>
22                 <td>1.1.1.1</td>
23                 <td>8080</td>
24             </tr>
25             <tr>
26                 <td><input type="checkbox"/></td>
27                 <td>1.1.1.1</td>
28                 <td>8080</td>
29             </tr>
30             <tr>
31                 <td><input type="checkbox"/></td>
32                 <td>1.1.1.1</td>
33                 <td>8080</td>
34             </tr>
35         </tbody>
36     </table>
37     <input id="all_id" type="button" value="全选"/>
38     <input id="rev_id" type="button" value="反选"/>
39     <input id="canel_id" type="button" value="取消"/>
40 
41 <script src="jquery-3.3.1.js"></script>
42 <script>
43     $('#all_id')[0].onclick = function(){
44         $('#tb :checkbox').prop('checked',true);
45     }
46 
47     $('#canel_id')[0].onclick = function () {
48         $('#tb :checkbox').prop('checked',false);
49     }
50 
51     $('#rev_id')[0].onclick = function () {
52         $('#tb :checkbox').each(function () {
53             $(this).prop('checked',!$(this).prop('checked'));
54             // this.checked = !this.checked;
55         })
56     }
57 </script>
58 </body>
59 </html>
View Code

  其中prpo是专门用于checkbox,radio属性设置,each方法是jQuery内置循环。$('#tb :checkbox').each(function(k){ //k当前索引  //this当前循环的元素})。

3、筛选(next(), nextAll(), nextUntil(), prev(), prevAll(), prevUntil(), parent(), parents(), parentsUntil(), children(), siblings(), find(), $('#id').eq(index), $('#id:eq(index)'), first(), last())

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div>
 9         <a id="i2"></a>
10         <a>asdf</a>
11         <a>asdf</a>
12         <a id='i1' class="c1">asdf</a>
13         <a>asdf</a>
14         <a id='ii1'>asdf</a>
15         <a>asdf</a>
16     </div>
17 
18 <script src="jquery-3.3.1.js">
19 
20 </script>
21 <script>
22     $('#i1').next();//下一个元素
23     $('#i1').nextAll(); //下面所有元素
24     $('#i1').nextUntil('#ii1');//直到#ii1,不包含#ii1
25     $('#i1').prev(); //前一个元素
26     $('#i1').prevAll(); //前面所有元素
27     $('#i1').prevUntil("#i2"); //前面的元素 直到i2
28     $('#i1').parent();//父标签
29     $('#i1').parents(); //所有父标签
30     $('#i1').parentsUntil('#id'); //查找所有父标签直到id
31     $('#i1').children(); //查找所有孩子
32     $('#i1').siblings();  //查询所有兄弟
33     $('#i1').find(); //查询子子孙孙
34     $('#i1:eq(1)'); //查找第一个元素
35     $('#i1').eq(1); //查找第一个元素
36     $('#i1').first();  //查找第一个元素
37     $('#i1').hasClass('c1'); //查找是否有某个类
38 </script>
39 </body>
40 </html>
View Code

4、文本操作(text(),html(),val())

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <a id="id">12345</a>
 9 <input type="text" value="1234"/>
10 
11 <script src="jquery-3.3.1.js">
12 
13 </script>
14 <script>
15     $('#id').text();  //获取值
16     $('#id').text('sdds'); //设置值
17     $(':text').val();//获取值
18     $(':text').val('sfsf');//设置值
19     $('#id').html('<a>1</a>'); //设置html
20     $('#id').html();  //获取html
21 </script>
22 </body>
23 </html>
View Code

5、类操作(addClass(),removeClass(),toggleClass())

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .hide{
 8             display: none;
 9         }
10     </style>
11 </head>
12 <body>
13 <a id="id">12345</a>
14 <script src="jquery-3.3.1.js">
15 
16 </script>
17 <script>
18     $('#id').addClass('hide');//添加类
19     $('#id').removeClass('hide');//删除类
20     $('#id').toggleClass('hide');//如果有就删除 如果没有就添加
21 </script>
22 </body>
23 </html>
View Code

  实例展示,tab菜单

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7 
 8         .content_active{
 9             background: #7dddff;
10         }
11         .active{
12             background: #3f49e1;
13         }
14         .menu{
15             height: 48px;
16             background: #dddddd;
17             line-height: 48px;
18         }
19         .menu .item{
20             float: left;
21             margin-left: 80px;
22             padding-left: 40px;
23             padding-right: 40px;
24             cursor: pointer;
25 
26             width: 50px;
27             /*background: #cadd66;*/
28         }
29         .hide{
30             display: none;
31         }
32         .content {
33             height: 300px;
34             width: 698px;
35             border: 1px solid darkgray;
36         }
37     </style>
38 </head>
39 <body>
40 <div style="width: 700px;margin: 0 auto">
41     <div class="menu">
42         <div target='1' class="item active">菜单一</div>
43         <div target='2' class="item">菜单二</div>
44         <div target='3' class="item">菜单三</div>
45     </div>
46     <div>
47         <div name='1' class="content">内容fdfdfdfdfdfds一</div>
48         <div name='2' class="content hide"><input type="button" value="点我"/></div>
49         <div name='3' class="content hide">内容sdffffff三</div>
50     </div>
51 </div>
52 
53 <script src="jquery-3.3.1.js"></script>
54 
55 <script>
56     $('.item').click(function(){
57         $(this).addClass('active').siblings().removeClass('active');
58         // var attr = $(this).attr('target');
59         // var temp = ".content[name="+attr+"]";
60         // $(temp).removeClass('hide');
61         // $(temp).siblings().addClass('hide');
62         //利用索引完成
63         $('.content').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
64     })
65 </script>
66 </body>
67 </html>
View Code

6、属性操作(attr(),removeAttr(),prpo())

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .hide{
 8             display: none;
 9         }
10     </style>
11 </head>
12 <body>
13 <a id="id">12345</a>
14 <input type="radio" value="k"/>
15 <script src="jquery-3.3.1.js">
16 
17 </script>
18 <script>
19     //专门用于自定义属性
20     $('#id').attr('class'); //获取属性值
21     $('#id').attr('class','hide'); //设置属性,可以是自定义属性
22     $('#id').removeAttr('class'); //删除属性
23     //专门用于checbox,radio一类
24     $(':radio').prop('checked');  //获取属性值
25     $(':radio').prop('checked',true); //设置
26 </script>
27 </body>
28 </html>
View Code

7、文档处理(append(), prepend(), after(), before(), empty())

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .hide{
 8             display: none;
 9         }
10     </style>
11 </head>
12 <body>
13 <div id="i1">1233</div>
14 <script src="jquery-3.3.1.js">
15 
16 </script>
17 <script>
18     $('#i1').append('<div>123</div>'); //在儿子节点最后插入一个子元素
19     $('#i1').prepend('<div>456</div>>'); //在儿子节点最前面插入一个子元素
20     $('#i1').after('<div>1111</div>'); //在该元素后面插入一个子元素
21     $('#i1').before('<div>4444</div>'); //在该元素前面插入一个老师
22     $('#i1').empty();//清空元素的内容
23 </script>
24 </body>
25 </html>
View Code

8、css处理  $('#i1').css({'height':'200px','width':'100px','background':'blue'}) 

  点赞实例演示。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .container{
 8             padding: 50px;
 9             border: 1px solid darkgray;
10         }
11         .container .item{
12             height: 40px;
13             width: 40px;
14             line-height: 40px;
15             text-align: center;
16             position: relative;
17             cursor: pointer;
18             /*border: 1px solid red;*/
19         }
20     </style>
21 </head>
22 <body>
23     <div class="container">
24         <div  class="item">
25             <span></span>
26         </div>
27     </div>
28 
29 <script src="jquery-3.3.1.js"></script>
30 
31 <script>
32     $('.item').click(function () {
33         var span = document.createElement("span");
34         var fontSize = 15;
35         var right = 0;
36         var top = 0;
37         var opacity = 1;
38         $(span).text("+1");
39         $(span).css('position','absolute');
40         $(span).css('right',right);
41         $(span).css('top',top);
42         $(span).css('fontSize',fontSize+"px");
43         $(span).css('color',"green");
44         $(span).css('opacity',opacity);
45         $(this).append(span);
46         var obj = setInterval(function() {
47             fontSize = fontSize+5;
48             right = right-10;
49             top = top -10;
50             opacity = opacity - 0.1;
51             $(span).css('right',right);
52             $(span).css('top',top);
53             $(span).css('fontSize',fontSize+"px");
54             $(span).css('color',"green");
55             $(span).css('opacity',opacity);
56             if(opacity<0) {
57                 clearInterval(obj);
58                 $(span).remove();
59             }
60         },100);
61     });
62 </script>
63 </body>
64 </html>
View Code

9、位置($(window).scrollTop()  offset().left  offset().top, position().top, position().left  $('#id').height(), $('#id').innerHeight(), $('#id').outerHeight()) 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         #i1{
 8             height: 100px;
 9             width: 100px;
10             overflow: auto;
11             position: relative;
12         }
13         #i2{
14             position: absolute;
15             height: 50px;
16             width: 50px;
17             background: #ff6600;
18             left: 10px;
19 
20         }
21     </style>
22 </head>
23 <body style="height: 5000px">
24 <div id="i1">
25     <div id="i2">2121</div>
26     <p>ddsdds</p>
27     <p>ddsdds</p>
28     <p>ddsdds</p>
29     <p>ddsdds</p>
30     <p>ddsdds</p>
31 </div>
32 <script src="jquery-3.3.1.js">
33 
34 </script>
35 <script>
36     $(window).scrollTop(); //获取滚动条的位置
37     $(window).scrollTop(10);//设置滚动条的位置
38     $('#i1').scrollTop(); //获取div滚动条的位置
39     $('#i1').scrollTop(10);  //设置div滚动条的位置
40     $('#i1').offset();  //div坐标位置
41     $('#i2').position();  //div的position位置
42 </script>
43 </body>
44 </html>
View Code

  下面我们通过一个图来理解height(),innerHeight(),outerHeight(false),outerHeight(true)。

  控件拖拽实例演示。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7 
 8         #moveBar{
 9             position: absolute;
10         }
11         #banner{
12 
13             height: 48px;
14             width: 300px;
15             background: #ff6600;
16             line-height: 48px;
17             text-align: center;
18             cursor: move;
19             user-select:none;/*用户无法选择文本*/
20 
21         }
22         #content{
23             position: absolute;
24             top: 48px;
25             height: 200px;
26             width: 298px;
27             border: 1px solid darkgray;
28         }
29     </style>
30 </head>
31 <body>
32     <div id="moveBar">
33         <div id="banner">标题</div>
34         <!--<div id="d1" style="z-index: 2">标题</div>-->
35         <div id="content"><textarea style="width: 292px;height: 194px;">编辑</textarea> </div>
36     </div>
37 
38 <script src="jquery-3.3.1.js"></script>
39 
40 <script>
41     $(function () {
42         $('#banner').mousedown(function(e) {
43            var isMove = true;
44            var div_x = e.pageX - $('#moveBar').offset().left;
45            var div_y = e.pageY - $('#moveBar').offset().top;
46            $(document).mousemove(function(e) {
47                if(isMove){
48                    var tem_x =  e.pageX - div_x;
49                    var tem_y = e.pageY - div_y;
50                    $('#moveBar').css('left',tem_x);
51                    $('#moveBar').css('top',tem_y);
52                }
53            }).mouseup(function () {
54                isMove= false;
55            })
56         });
57 
58     });
59 
60 </script>
61 </body>
62 </html>
View Code

10、jQuery事件绑定(click(), [bind()--unbind()], [on()--off()],  [delegate()---undelegate()托管])

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         #i1{
 8             height: 100px;
 9             width: 100px;
10             background: #ff6600;
11         }
12 
13     </style>
14 </head>
15 <body>
16 <div id="i1">
17     事件绑定
18 </div>
19 
20 <input type="button" value="+"/>
21 <script src="jquery-3.3.1.js">
22 
23 </script>
24 <script>
25     $('div').click(function(e) {
26         console.log(this);
27         alert('hi');
28     });
29 
30     $('div').bind('click',function(e) {
31         console.log(this);
32         alert('bind');
33     });
34 
35     $('div').on('click',function (e) {
36         alert('on');
37     });
38     //托管----该绑定事件的方式不同于其他三种的原因是:其在事件触发的时候才会绑定事件,看下面的列子
39     $(document).delegate('div','click',function () {
40         alert('delegate');
41     });
42 
43     //---------以下实例展示了托管不同于其他事件绑定的方法
44 
45     $(':button').click(function (e) {
46         $('body').append('<div>新增的div</div>');
47     })
48     //点击+按钮生成新的div,此时点击新的div 只有delegate绑定的事件能响应
49 </script>
50 </body>
51 </html>
View Code

  最后需要提醒的是,我们希望在页面框架加载完成之后就能够自动执行jQuery代码,此时,我们一般会将代码放在

 $(function()){

  $(....) //我们的jQuery代码

} 

11、阻止事件发生

  我们知道,对于一个<a href='http://www.baidu.com'></a>标签而言,其默认有一个鼠标点击跳转时间,那么,如果我们给这个a标签绑定一个click时间,会肿么样呢?一起看下面的例子。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 
 7 </head>
 8 <body>
 9 <a href="http://www.baidu.com">百度一下</a>
10 
11 
12 <script src="jquery-3.3.1.js">
13 
14 </script>
15 <script>
16     $('a').click(function () {
17         alert(1);
18         return true; //false时不会跳转 为true时会跳转
19     });
20 </script>
21 </body>
22 </html>
View Code

  通过上面的例子,我们发现如果我们自己绑定的事件return false时,标签自己默认的事件就失效,反之,如果我们返回true,则在响应完我们自己的事件之后,再去响应默认的事件。这种机制,使我们想起在表单提交的时候可以做一些必要的校验。辣么,我们就看一下表单提交的代码演示。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .error{
 8             color: red;
 9         }
10     </style>
11 </head>
12 <body>
13     <form action="5.html" method="post">
14         <div><input type="text"/></div>
15         <div><input type="text"/></div>
16         <div><input type="text"/></div>
17         <div><input type="password"/></div>
18         <input type="submit" value="提交"/>
19     </form>
20     <div style="height: 600px;width: 600px;border: 1px solid darkgray">
21         <img  height="600px" width="600px" src="http://img.ivsky.com/img/tupian/pre/201803/15/fangsuo_shudian-022.jpg"/>
22     </div>
23 <script src="jquery-3.3.1.js" ></script>
24 
25 <script>
26     $(function () { //当页面框架加载完成后,自动执行
27         $(':submit').bind('click',function () {
28         var flag = true;
29         $('.error').remove();
30         $(':text,:password').each(function () {
31            var val = $(this).val();
32            if(val.trim().length<=0){
33                flag = false;
34                if($(this).parent().find('span').length<=0){
35                    var tag = document.createElement('span');
36                    $(tag).text('*必填');
37                    $(tag).addClass('error');
38                    $(this).after(tag);
39                }
40            }
41         });
42         return flag;
43     });
44     });
45 </script>
46 </body>
47 </html>
View Code

 

posted @ 2018-04-28 14:47  高文祥888888  阅读(205)  评论(0编辑  收藏  举报