Jquery 忘了光。。。

一、jQuery是什么?

<1>jQuery由美国人John Resig创建,至今已吸引了来自世界各地众多JavaScript高手加入其team。

<2>jQuery是继prototype之后又一个优秀的JavaScript框架。其宗旨是——WRITELESS,DO MORE!

<3>它是轻量级的js库(压缩后只有21k),这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器

<4>jQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTMLdocument、events、实现动画效果,并且方便地为网站提供AJAX交互。

<5>jQuery还有一个比较大的优势,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

二、什么是jQuery对象?

jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的。如果一个对象是jQuery对象,那么它就可以使用jQuery里的方法:

$(“#test”).html();

1
2
3
4
5
6
7
8
9
10
11
12
13
$( "#test" ).html()   
        //意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法
 
        // 这段代码等同于用DOM实现代码: document.getElementById(" test ").innerHTML;
 
        //虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错
 
        //约定:如果获取的是 jQuery 对象, 那么要在变量前面加上$.
 
var  $variable = jQuery 对象
var  variable = DOM 对象
 
$variable[0]:jquery对象转为dom对象      $( "#msg" ).html(); $( "#msg" )[0].innerHTML

jQuery的基础语法:$(selector).action()

三、寻找元素(选择器和筛选器)

3.1选择器

3.1.1 基本选择器

1
$( "*" )  $( "#id" )   $( ".class" )  $( "element" )  $( ".class,p,div" )

3.1.2 层级选择器

1
$( ".outer div" )  $( ".outer>div" )   $( ".outer+div" )  $( ".outer~div" )

3.1.3 基本筛选器

1
$( "li:first" )  $( "li:eq(2)" )  $( "li:even" ) $( "li:gt(1)" )<br>gt=great than; eq=equal; ge=great and equal; ne=not equal; lt=list than

3.1.4 属性选择器

1
$( '[id="div1"]' )   $( '["alex="sb"][id]' )

3.1.5 表单选择器

1
$( "[type='text']" )----->$( ":text" )         注意只适用于input标签  : $( "input:checked" )

实例之左侧菜单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>left_menu</title>
     <script>
           function  show(self){
               $(self).next().removeClass( "hide" );
               $(self).parent().siblings().children( ".con" ).addClass( "hide" );
 
           }
     </script>
     <style>
           .menu{
               height: 500px;
               width: 30%;
              
               float: left;
           }
           .content{
               height: 500px;
               width: 70%;
              
               float: left;
           }
          .title{
              line-height: 50px;
              #425a66;
             color: forestgreen;}
 
 
         .hide{
             display: none;
         }
 
 
    </style>
</head>
<body>
 
<div class="outer">
    <div class="menu">
        <div class="item">
            <div class="title" onclick="show(this);">菜单一</div>
            <div class="con">
                <div>111</div>
                <div>111</div>
                <div>111</div>
            </div>
        </div>
        <div class="item">
            <div class="title" onclick="show(this);">菜单二</div>
            <div class="con hide">
                <div>111</div>
                <div>111</div>
                <div>111</div>
            </div>
        </div>
        <div class="item">
            <div class="title" onclick="show(this);">菜单三</div>
            <div class="con hide">
                <div>111</div>
                <div>111</div>
                <div>111</div>
            </div>
        </div>
 
    </div>
    <div class="content"></div>
 
</div>
 
</body>
</html>

实例之tab切换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>tab</title>
     <script>
            function  tab(self){
                var  index=$(self).attr( "xxx" );
                $( "#" +index).removeClass( "hide" ).siblings().addClass( "hide" );
                $(self).addClass( "current" ).siblings().removeClass( "current" );
 
            }
     </script>
     <style>
         *{
             margin: 0px;
             padding: 0px;
         }
         .tab_outer{
             margin: 0px auto;
             width: 60%;
         }
         .menu{
             #cccccc;
            /*border: 1px solid red;*/
            line-height: 40px;
        }
        .menu li{
            display: inline-block;
        }
        .menu a{
            border-right: 1px solid red;
            padding: 11px;
        }
        .content{
            
            border: 1px solid green;
            height: 300px;
        }
        .hide{
            display: none;
        }
 
        .current{
            
            color: yellow;
            border-top: solid 2px rebeccapurple;
        }
    </style>
</head>
<body>
      <div class="tab_outer">
          <ul class="menu">
              <li xxx="c1" class="current" onclick="tab(this);">菜单一</li>
              <li xxx="c2" onclick="tab(this);">菜单二</li>
              <li xxx="c3" onclick="tab(this);">菜单三</li>
          </ul>
          <div class="content">
              <div id="c1">内容一</div>
              <div id="c2" class="hide">内容二</div>
              <div id="c3" class="hide">内容三</div>
          </div>
 
      </div>
</body>
</html>
3.2 筛选器

3.2.1 过滤筛选器

1
$( "li" ).eq(2)  $( "li" ).first()  $( "ul li" ).hasclass( "test" )

3.2.2 查找筛选器

1
2
3
4
5
6
7
8
9
$( "div" ).children( ".test" )     $( "div" ).find( ".test"
                                
  $( ".test" ).next()    $( ".test" ).nextAll()    $( ".test" ).nextUntil()
                            
  $( "div" ).prev()  $( "div" ).prevAll()  $( "div" ).prevUntil()  
                         
  $( ".test" ).parent()  $( ".test" ).parents()  $( ".test" ).parentUntil()
 
  $( "div" ).siblings()

四、操作元素(属性,css,文档处理)

4.1 属性操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--------------------------属性
$( "" ).attr();
$( "" ).removeAttr();
$( "" ).prop();
$( "" ).removeProp();
--------------------------CSS类
$( "" ).addClass( class |fn)
$( "" ).removeClass([ class |fn])
--------------------------HTML代码/文本/值
$( "" ).html([val|fn])
$( "" ).text([val|fn])
$( "" ).val([val|fn|arr])
---------------------------
$( "" ).css( "color" , "red" )

注意:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<input id= "chk1"  type= "checkbox"  />是否可见
<input id= "chk2"  type= "checkbox"  checked= "checked"  />是否可见
 
 
 
<script>
 
//对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
//对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
//像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此
//需要使用prop方法去操作才能获得正确的结果。
 
 
//    $("#chk1").attr("checked")
//    undefined
//    $("#chk1").prop("checked")
//    false
 
//  ---------手动选中的时候attr()获得到没有意义的undefined-----------
//    $("#chk1").attr("checked")
//    undefined
//    $("#chk1").prop("checked")
//    true
 
     console.log($( "#chk1" ).prop( "checked" )); //false
     console.log($( "#chk2" ).prop( "checked" )); //true
     console.log($( "#chk1" ).attr( "checked" )); //undefined
     console.log($( "#chk2" ).attr( "checked" )); //checked
</script>
 
attr和prop

实例之全反选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "jquery-1.11.3.min.js" ></script>
     <script>
 
              function  selectall(){
 
                  $( "table :checkbox" ).prop( "checked" , true )
              }
              function  cancel(){
 
                  $( "table :checkbox" ).prop( "checked" , false )
              }
 
              function  reverse(){
 
 
                  //                 var idlist=$("table :checkbox")
//                 for(var i=0;i<idlist.length;i++){
//                     var element=idlist[i];
//
//                     var ischecked=$(element).prop("checked")
//                     if (ischecked){
//                         $(element).prop("checked",false)
//                     }
//                     else {
//                         $(element).prop("checked",true)
//                     }
//
//                 }
//    jquery循环的两种方式
                  //方式一
//                 li=[10,20,30,40]
//                 dic={name:"yuan",sex:"male"}
//                 $.each(li,function(i,x){
//                     console.log(i,x)
//                 })
 
                  //方式二
//                    $("tr").each(function(){
//                        console.log($(this).html())
//                    })
 
 
 
                  $( "table :checkbox" ).each( function (){
 
                      $( this ).prop( "checked" ,!$( this ).prop( "checked" ));
 
//                     if ($(this).prop("checked")){
//                         $(this).prop("checked",false)
//                     }
//                     else {
//                         $(this).prop("checked",true)
//                     }
 
                      // 思考:如果用attr方法可以实现吗?
 
 
                  });
              }
 
     </script>
</head>
<body>
 
      <button onclick= "selectall();" >全选</button>
      <button onclick= "cancel();" >取消</button>
      <button onclick= "reverse();" >反选</button>
 
      <table border= "1" >
          <tr>
              <td><input type= "checkbox" ></td>
              <td>111</td>
          </tr>
          <tr>
              <td><input type= "checkbox" ></td>
              <td>222</td>
          </tr>
          <tr>
              <td><input type= "checkbox" ></td>
              <td>333</td>
          </tr>
          <tr>
              <td><input type= "checkbox" ></td>
              <td>444</td>
          </tr>
      </table>
 
 
 
</body>
</html>

实例之模态对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <style>
         .back{
            
             height: 2000px;
         }
 
         .shade{
             position: fixed;
             top: 0;
             bottom: 0;
             left:0;
             right: 0;
            
             opacity: 0.4;
         }
 
         .hide{
             display: none;
         }
 
         .models{
             position: fixed;
             top: 50%;
             left: 50%;
             margin-left: -100px;
             margin-top: -100px;
             height: 200px;
             width: 200px;
            
 
         }
     </style>
</head>
<body>
<div  class = "back" >
     <input id= "ID1"  type= "button"  value= "click"  onclick= "action1(this)" >
</div>
 
<div  class = "shade hide" ></div>
<div  class = "models hide" >
     <input id= "ID2"  type= "button"  value= "cancel"  onclick= "action2(this)" >
</div>
 
 
<script src= "jquery-1.11.3.min.js" ></script>
<script>
 
     function  action1(self){
         $(self).parent().siblings().removeClass( "hide" );
 
     }
     function  action2(self){
         //$(self).parent().parent().children(".models,.shade").addClass("hide")
 
         $(self).parent().addClass( "hide" ).prev().addClass( "hide" )
 
     }
</script>
</body>
</html>
4.2 文档处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//创建一个标签对象
     $( "<p>" )
 
 
//内部插入
 
     $( "" ).append(content|fn)      ----->$( "p" ).append( "<b>Hello</b>" );
     $( "" ).appendTo(content)       ----->$( "p" ).appendTo( "div" );
     $( "" ).prepend(content|fn)     ----->$( "p" ).prepend( "<b>Hello</b>" );
     $( "" ).prependTo(content)      ----->$( "p" ).prependTo( "#foo" );
 
//外部插入
 
     $( "" ).after(content|fn)       ----->$( "p" ).after( "<b>Hello</b>" );
     $( "" ).before(content|fn)      ----->$( "p" ).before( "<b>Hello</b>" );
     $( "" ).insertAfter(content)    ----->$( "p" ).insertAfter( "#foo" );
     $( "" ).insertBefore(content)   ----->$( "p" ).insertBefore( "#foo" );
 
//替换
     $( "" ).replaceWith(content|fn) ----->$( "p" ).replaceWith( "<b>Paragraph. </b>" );
 
//删除
 
     $( "" ).empty()
     $( "" ).remove([expr])
 
//复制
 
     $( "" ).clone([Even[,deepEven]])

实例之复制样式条

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
 
</head>
<body>
             <div  class = "outer" >
                 <div  class = "item" >
                         <input type= "button"  value= "+"  onclick= "add(this);" >
                         <input type= "text" >
                 </div>
             </div>
 
<script src= "jquery-1.11.3.min.js" ></script>
     <script>
             //var $clone_obj=$(self).parent().clone();  // $clone_obj放在这个位置可以吗?
             function  add(self){
                 // 注意:if var $clone_obj=$(".outer .item").clone();会一遍二,二变四的增加
                  var  $clone_obj=$(self).parent().clone();
                  $clone_obj.children( ":button" ).val( "-" ).attr( "onclick" , "removed(this)" );
                  $(self).parent().parent().append($clone_obj);
             }
            function  removed(self){
 
                $(self).parent().remove()
 
            }
 
     </script>
</body>
</html>  
4.3 css操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CSS
         $( "" ).css(name|pro|[,val|fn])
     位置
         $( "" ).offset([coordinates])
         $( "" ).position()
         $( "" ).scrollTop([val])
         $( "" ).scrollLeft([val])
     尺寸
         $( "" ).height([val|fn])
         $( "" ).width([val|fn])
         $( "" ).innerHeight()
         $( "" ).innerWidth()
         $( "" ).outerHeight([soptions])
         $( "" ).outerWidth([options])

实例返回顶部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "js/jquery-2.2.3.js" ></script>
     <script>
 
 
           window.onscroll= function (){
 
               var  current=$(window).scrollTop();
               console.log(current)
               if  (current>100){
 
                   $( ".returnTop" ).removeClass( "hide" )
               }
               else  {
               $( ".returnTop" ).addClass( "hide" )
           }
           }
 
 
            function  returnTop(){
//               $(".div1").scrollTop(0);
 
                $(window).scrollTop(0)
            }
 
 
 
 
     </script>
     <style>
         body{
             margin: 0px;
         }
         .returnTop{
             height: 60px;
             width: 100px;
            
             position: fixed;
             right: 0;
             bottom: 0;
             color: greenyellow;
             line-height: 60px;
             text-align: center;
         }
         .div1{
            
             font-size: 5px;
             overflow: auto;
             width: 500px;
         }
         .div2{
            
         }
         .div3{
            
         }
         .div{
             height: 300px;
         }
         .hide{
             display: none;
         }
     </style>
</head>
<body>
      <div  class = "div1 div" >
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
          <p>hello</p>
 
      </div>
      <div  class = "div2 div" ></div>
      <div  class = "div3 div" ></div>
      <div  class = "returnTop hide"  onclick= "returnTop();" >返回顶部</div>
</body>
</html>

五、事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
页面载入
     ready(fn)   //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
     $(document).ready( function (){}) -----------> $( function (){})
 
事件处理
     $( "" ).on(eve,[selector],[data],fn)   // 在选择元素上绑定一个或多个事件的事件处理函数。
 
     //  .on的selector参数是筛选出调用.on方法的dom元素的指定子元素,如:
     //  $('ul').on('click', 'li', function(){console.log('click');})就是筛选出ul下的li给其绑定
     //  click事件;
 
     [selector]参数的好处:
         好处在于.on方法为动态添加的元素也能绑上指定事件;如:
 
         //$('ul li').on('click', function(){console.log('click');})的绑定方式和
         //$('ul li').bind('click', function(){console.log('click');})一样;我通过js给ul添加了一个
         //li:$('ul').append('<li>js new li<li>');这个新加的li是不会被绑上click事件的
 
         //但是用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,然后动态添加
         //li:$('ul').append('<li>js new li<li>');这个新生成的li被绑上了click事件
     
     [data]参数的调用:
              function  myHandler(event) {
                 alert(event.data.foo);
                 }
              $( "li" ).on( "click" , {foo:  "bar" }, myHandler)

实例之面板拖动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html>
<html>
<head lang= "en" >
     <meta charset= "UTF-8" >
     <title></title>
</head>
<body>
     <div style= "border: 1px solid #ddd;width: 600px;position: absolute;" >
         <div id= "title"  style= "height: 40px;color: white;" >
             标题
         </div>
         <div style= "height: 300px;" >
             内容
         </div>
     </div>
<script type= "text/javascript"  src= "jquery-2.2.3.js" ></script>
<script>
     $( function (){
         // 页面加载完成之后自动执行
         $( '#title' ).mouseover( function (){
             $( this ).css( 'cursor' , 'move' );
         }).mousedown( function (e){
             //console.log($(this).offset());
             var  _event = e || window.event;
             // 原始鼠标横纵坐标位置
             var  ord_x = _event.clientX;
             var  ord_y = _event.clientY;
 
             var  parent_left = $( this ).parent().offset().left;
             var  parent_top = $( this ).parent().offset().top;
 
             $( this ).bind( 'mousemove' function (e){
                 var  _new_event = e || window.event;
                 var  new_x = _new_event.clientX;
                 var  new_y = _new_event.clientY;
 
                 var  x = parent_left + (new_x - ord_x);
                 var  y = parent_top + (new_y - ord_y);
 
                 $( this ).parent().css( 'left' ,x+ 'px' );
                 $( this ).parent().css( 'top' ,y+ 'px' );
 
             })
         }).mouseup( function (){
             $( this ).unbind( 'mousemove' );
         });
     })
</script>
</body>
</html>

实例之放大镜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>bigger</title>
     <style>
         *{
             margin: 0;
             padding:0;
         }
         .outer{
             height: 350px;
             width: 350px;
             border: dashed 5px cornflowerblue;
         }
         .outer .small_box{
             position: relative;
         }
         .outer .small_box .float{
             height: 175px;
             width: 175px;
            
             opacity: 0.4;
             fill-opacity: 0.4;
             position: absolute;
             display: none;
 
         }
 
         .outer .big_box{
             height: 400px;
             width: 400px;
             overflow: hidden;
             position:absolute;
             left: 360px;
             top: 0px;
             z-index: 1;
             border: 5px solid rebeccapurple;
             display: none;
 
 
         }
         .outer .big_box img{
             position: absolute;
             z-index: 5;
         }
 
 
     </style>
</head>
<body>
 
         <div  class = "outer" >
             <div  class = "small_box" >
                 <div  class = "float" ></div>
                 <img src= "small.jpg" >
 
             </div>
             <div  class = "big_box" >
                 <img src= "big.jpg" >
             </div>
 
         </div>
 
 
<script src= "jquery-2.1.4.min.js" ></script>
<script>
 
     $( function (){
 
           $( ".small_box" ).mouseover( function (){
 
               $( ".float" ).css( "display" , "block" );
               $( ".big_box" ).css( "display" , "block" )
 
           });
           $( ".small_box" ).mouseout( function (){
 
               $( ".float" ).css( "display" , "none" );
               $( ".big_box" ).css( "display" , "none" )
 
           });
 
           $( ".small_box" ).mousemove( function (e){
 
               var  _event=e || window.event;
 
               var  float_width=$( ".float" ).width();
               var  float_height=$( ".float" ).height();
 
               console.log(float_height,float_width);
 
               var  float_height_half=float_height/2;
               var  float_width_half=float_width/2;
               console.log(float_height_half,float_width_half);
 
 
                var  small_box_width=$( ".small_box" ).height();
                var  small_box_height=$( ".small_box" ).width();
 
 
 
//  鼠标点距离左边界的长度与float应该与左边界的距离差半个float的width,height同理
               var  mouse_left=_event.clientX-float_width_half;
               var  mouse_top=_event.clientY-float_height_half;
 
               if (mouse_left<0){
                   mouse_left=0
               } else  if  (mouse_left>small_box_width-float_width){
                   mouse_left=small_box_width-float_width
               }
 
 
               if (mouse_top<0){
                   mouse_top=0
               } else  if  (mouse_top>small_box_height-float_height){
                   mouse_top=small_box_height-float_height
               }
 
                $( ".float" ).css( "left" ,mouse_left+ "px" );
                $( ".float" ).css( "top" ,mouse_top+ "px" )
 
                var  percentX=($( ".big_box img" ).width()-$( ".big_box" ).width())/ (small_box_width-float_width);
                var  percentY=($( ".big_box img" ).height()-$( ".big_box" ).height())/(small_box_height-float_height);
 
               console.log(percentX,percentY)
 
                $( ".big_box img" ).css( "left" , -percentX*mouse_left+ "px" )
                $( ".big_box img" ).css( "top" , -percentY*mouse_top+ "px" )
           })
     })
 
 
</script>
</body>
</html>

六、动画效果

显示隐藏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "jquery-2.1.4.min.js" ></script>
     <script>
 
$(document).ready( function () {
     $( "#hide" ).click( function  () {
         $( "p" ).hide(1000);
     });
     $( "#show" ).click( function  () {
         $( "p" ).show(1000);
     });
 
//用于切换被选元素的 hide() 与 show() 方法。
     $( "#toggle" ).click( function  () {
         $( "p" ).toggle();
     });
})
 
     </script>
     <link type= "text/css"  rel= "stylesheet"  href= "style.css" >
</head>
<body>
 
 
     <p>hello</p>
     <button id= "hide" >隐藏</button>
     <button id= "show" >显示</button>
     <button id= "toggle" >切换</button>
 
</body>
</html>

滑动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "jquery-2.1.4.min.js" ></script>
     <script>
     $(document).ready( function (){
      $( "#slideDown" ).click( function (){
          $( "#content" ).slideDown(1000);
      });
       $( "#slideUp" ).click( function (){
          $( "#content" ).slideUp(1000);
      });
       $( "#slideToggle" ).click( function (){
          $( "#content" ).slideToggle(1000);
      })
   });
     </script>
     <style>
 
         #content{
             text-align: center;
            
             border:solid 1px red;
             display: none;
             padding: 50px;
         }
     </style>
</head>
<body>
 
     <div id= "slideDown" >出现</div>
     <div id= "slideUp" >隐藏</div>
     <div id= "slideToggle" >toggle</div>
 
     <div id= "content" >helloworld</div>
 
</body>
</html>

淡入淡出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "jquery-2.1.4.min.js" ></script>
     <script>
     $(document).ready( function (){
    $( "#in" ).click( function (){
        $( "#id1" ).fadeIn(1000);
 
 
    });
     $( "#out" ).click( function (){
        $( "#id1" ).fadeOut(1000);
 
    });
     $( "#toggle" ).click( function (){
        $( "#id1" ).fadeToggle(1000);
 
 
    });
     $( "#fadeto" ).click( function (){
        $( "#id1" ).fadeTo(1000,0.4);
 
    });
});
 
 
 
     </script>
 
</head>
<body>
       <button id= "in" >fadein</button>
       <button id= "out" >fadeout</button>
       <button id= "toggle" >fadetoggle</button>
       <button id= "fadeto" >fadeto</button>
 
       <div id= "id1"  style= "display:none; width: 80px;height: 80px; padding: 0px !important; border-radius: 0px !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.8em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: auto !important; background: none !important;">></div>
 
</body>
</htm l>

回调函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Title</title>
     <script src= "jquery-2.1.4.min.js" ></script>
 
</head>
<body>
   <button>hide</button>
   <p>helloworld helloworld helloworld</p>
 
 
 
  <script>
    $( "button" ).click( function (){
        $( "p" ).hide(1000, function (){
            alert($( this ).html())
        })
 
    })
     </script>
</body>
</html>

七、扩展方法(插件机制)

一 用jQuery写插件时,最核心的两个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script>
     
$.extend(object)       //为JQuery 添加一个静态方法。
$.fn.extend(object)    //为JQuery实例添加一个方法。
 
 
     jQuery.extend({
           min:  function (a, b) {  return  a < b ? a : b; },
           max:  function (a, b) {  return  a > b ? a : b; }
         });
     console.log($.min(3,4));
 
//-----------------------------------------------------------------------
 
$.fn.extend({
     "print" : function (){
         for  ( var  i=0;i< this .length;i++){
             console.log($( this )[i].innerHTML)
         }
 
     }
});
 
$( "p" ).print();
</script>
二、定义作用域

  定义一个JQuery插件,首先要把这个插件的代码放在一个不受外界干扰的地方。如果用专业些的话来说就是要为这个插件定义私有作用域。外部的代码不能直接访问插件内部的代码。插件内部的代码不污染全局变量。在一定的作用上解耦了插件与运行环境的依赖。

1
2
3
4
5
6
( function (a,b){ return  a+b})(3,5)
 
        ( function  ($) { })(jQuery);
//相当于
         var  fn =  function  ($) { };
         fn(jQuery);
三、默认参数

定义了jQuery插件之后,如果希望某些参数具有默认值,那么可以以这种方式来指定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/step01 定义JQuery的作用域
( function  ($) {
     //step03-a 插件的默认值属性
     var  defaults = {
         prevId:  'prevBtn' ,
         prevText:  'Previous' ,
         nextId:  'nextBtn' ,
         nextText:  'Next'
         //……
     };
     //step06-a 在插件里定义方法
     var  showLink =  function  (obj) {
         $(obj).append( function  () {  return  "("  + $(obj).attr( "href" ) +  ")"  });
     }
 
     //step02 插件的扩展方法名称
     $.fn.easySlider =  function  (options) {
         //step03-b 合并用户自定义属性,默认属性
         var  options = $.extend(defaults, options);
         //step4 支持JQuery选择器
         //step5 支持链式调用
         return  this .each( function  () {
             //step06-b 在插件里定义方法
             showLink( this );
         });
     }
})(jQuery);

八、经典实例练习

实例之注册验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<form  class = "Form" >
 
     <p><input  class = "v1"  type= "text"  name= "username"  mark= "用户名" ></p>
     <p><input  class = "v1"  type= "text"  name= "email"  mark= "邮箱" ></p>
     <p><input  class = "v1"  type= "submit"  value= "submit"   onclick= "return validate()" ></p>
 
</form>
 
<script src= "jquery-3.1.1.js" ></script>
<script>
     // 注意:
     // DOM对象--->jquery对象    $(DOM)
     // jquery对象--->DOM对象    $("")[0]
 
     //---------------------------------------------------------
 
 
     // DOM绑定版本
     function  validate(){
 
         flag= true ;
 
         $( "Form .v1" ).each( function (){
             $( this ).next( "span" ).remove(); // 防止对此点击按钮产生多个span标签
               var  value=$( this ).val();
             if  (value.trim().length==0){
                  var  mark=$( this ).attr( "mark" );
                  var  ele=document.createElement( "span" );
                  ele.innerHTML=mark+ "不能为空!" ;
                  $( this ).after(ele);
                  $(ele).prop( "class" , "error" ); // DOM对象转换为jquery对象
                  flag= false ;
                  //  return false-------->引出$.each的return false注意点
             }
 
 
         });
 
         return  flag
     }
                    //---------------------------------------------------------
//---------------------------------------------------------
                    //---------------------------------------------------------
 
 
 
         function  f(){
 
         for ( var  i=0;i<4;i++){
 
             if  (i==2){
                 return
             }
             console.log(i)
         }
 
     }
     f();   // 这个例子大家应该不会有问题吧!!!
//------------------------------------------
     li=[11,22,33,44];
     $.each(li, function (i,v){
 
         if  (v==33){
                 return  ;    //  ===试一试 return false会怎样?
             }
             console.log(v)
     });
 
//------------------------------------------
 
     //  $.MyEach(obj,function(i,v){}):
          for ( var  in  obj){
 
              func(i,obj[i]) ;  //  i就是索引,v就是对应值
              // {}:我们写的大括号的内容就是func的执行语句;
          }
 
     // 大家再考虑: function里的return只是结束了当前的函数,并不会影响后面函数的执行
 
     //本来这样没问题,但因为我们的需求里有很多这样的情况:我们不管循环到第几个函数时,一旦return了,
     //希望后面的函数也不再执行了!基于此,jquery在$.each里又加了一步:
          for ( var  in  obj){
 
              ret=func(i,obj[i]) ;
              if (ret== false ){
                  return  ;
              }
 
          }
     // 这样就很灵活了:
     // <1>如果你想return后下面循环函数继续执行,那么就直接写return或return true
     // <2>如果你不想return后下面循环函数继续执行,那么就直接写return false
 
 
// ---------------------------------------------------------------------
    // 说了这么多,请问大家如果我们的需求是:判断出一个输入有问题后面就不判断了(当然也就不显示了),
    // 怎么办呢?
    // 对了
     if  (value.trim().length==0){
                   //...
                   //...
                   //flag=false;  //   flag=false不要去,它的功能是最后如果有问题,不提交数据!
                   return  false
             }
 
 
//最后,大家尝试着用jquery的绑定来完成这个功能!
 
       $( ".Form :submit" ).click( function (){});
     
</script>

转载于:https://www.cnblogs.com/chedanlangren/p/7077961.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值