• 前端——jQuery


    jQuery(一个集成了DOM、BOM、JavaScript的类库)

    一、查找元素

    jQuery选择器and筛选器:http://jquery.cuishifeng.cn

    选择器

    1. id	$('#i1') //获取id="i1"的jQuery对象
    
    2. class	//寻找class=c1的所有标签
    	<div class='c1'></div>
    	$(".c1")	
    	
    3. 标签		//在子子孙孙中寻找<a>标签
    	<div id='i10' class='c1'>
    		<a>f</a>
    		<a>f</a>
    	</div>
    	<div class='c1'>
    		<a>f</a>
    	</div>
    	<div class='c1'>
    		<div class='c2'> </div>
    	</div>
    				
    	$('a')
    				
    4. 组合
    	<div id='i10' class='c1'>
    		<a>f</a>
    		<a>f</a>
    	</div>
    	<div class='c1'>
    		<a>f</a>
    	</div>
    	<div class='c1'>
    		<div class='c2'> </div>
    	</div>
    				
    	$('a')
    	$('.c2')
    	$('a,.c2,#i10')	//在子子孙孙中寻找<a>标签和id="i10"和class=c2的标签
    				
    5. 层级
    	$('#i10 a') //在子子孙孙中寻找id="i10"和<a>标签
    	$('#i10>a') //寻找在id="i10"下的<a>标签
    				
    6. 基本
    	:first	//将jQuery对象中的第一个元素(DOM对象)取出来
    	:last  //用法:$('id=i1:last')  找出来id=i1的最后一个(dom)值
    	:eq()	//从0开始的  
    7. 属性
    	$('input[alex]')  input标签下具有alex属性的所有标签
    	$('[alex="123"]') alex属性等于123的标签
    					
    	<input type='text'/>
    	<input type='text'/>
    	<input type='file'/>
    	<input type='password'/>
    				
    	$("input[type='text']") 在input标签下具有type属性等于text的标签
    	$(':text')	属性后面等于text的所有标签
    

     

    $(':checkbox').each(function(k){
      each是jQuery自带的循环 在里面用this来代指当前循环的元素,是DOM对象
      k为当前索引     this==>$(this)
    }
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 
     9     <input type="button" value="全选" onclick="checkAll();" />
    10     <input type="button" value="反选" onclick="reverseAll();" />
    11     <input type="button" value="取消"  onclick="cancleAll();"/>
    12 
    13     <table border="1">
    14         <thead>
    15             <tr>
    16                 <th>选项</th>
    17                 <th>IP</th>
    18                 <th>PORT</th>
    19             </tr>
    20         </thead>
    21         <tbody>
    22 
    23             <tr>
    24                 <td><input type="checkbox" /></td>
    25                 <td>1.1.1.1</td>
    26                 <td>80</td>
    27             </tr>
    28             <tr>
    29                 <td><input type="checkbox" /></td>
    30                 <td>1.1.1.1</td>
    31                 <td>80</td>
    32             </tr>
    33             <tr>
    34                 <td><input type="checkbox" /></td>
    35                 <td>1.1.1.1</td>
    36                 <td>80</td>
    37             </tr>
    38         </tbody>
    39     </table>
    40 
    41     <script src="jquery-1.12.4.js"></script>
    42     <script>
    43         function checkAll() {
    44             $(':checkbox').prop('checked',true);
    45         }
    46         function cancleAll() {
    47             $(':checkbox').prop('checked',false);
    48         }
    49         function reverseAll() {
    50             $(':checkbox').each(function(k){
    51                 // this,代指当前循环的每一个元素
    52                 // Dom
    53                 /*
    54                 if(this.checked){
    55                     this.checked = false;
    56                 }else{
    57                     this.checked = true;
    58                 }
    59                 */
    60                 /*
    61                 if($(this).prop('checked')){
    62                     $(this).prop('checked', false);
    63                 }else{
    64                     $(this).prop('checked', true);
    65                 }
    66                 */
    67               // 三元运算var v = 条件? 真值:假值
    68                 var v = $(this).prop('checked')?false:true;
    69                 $(this).prop('checked',v);
    70             })
    71         }
    72     </script>
    73 </body>
    74 </html>
    示例:多选,反选,全选

    筛选器

    <div>
    	<a>asdf</a>
    	<a>asdf</a>
    	<a id='i1'>asdf</a>
    	<a>asdf</a>
    	<a id='i11'>asdf</a>
    	<a>asdf</a>
    </div>
    
    $('#i1').next()		具有i1标签的下一个标签
    $('#i1').nextAll()	具有i1标签的后面的所有标签
    $('#i1').nextUntil('#ii1')	从i1标签到i11标签中的所有标签
    
    $('#i1').prev()		具有i1标签的前一个标签
    $('#i1').prevAll()	具有i1标签的前面的所有标签
    $('#i11').prevUntil('#i1')	从i11标签到i1标签中的所有标签
    
    $('#i1').parent()	具有i1标签的前一个父亲
    $('#i1').parents()	具有i1标签的所有父亲(爷爷、太爷爷、太太爷爷)
    $('#i1').parentsUntil()	到那个父亲为止
    
    $('#i1').children()	所有孩子
    $('#i1').siblings()	所有兄弟
    $('#i1').find('a')	在i1标签里找a标签	
    $('li:eq(1)')	获取匹配(li标签)的第二个标签(从0开始的)
    $('li').eq(1)
    .first()
    .last()
    .hasClass('class')	判断获取的是否有该class标签

    二、操作元素

    文本操作

    $(this).text()	获取文本
    $(this).text("abc")	设置文本内容
    
    $(this).html()
    $(this).html(<a>abc</a>)
    
    $(this).val()	获取当前标签的value值
    $(this).val('abc')	设置当前标签的value值
    

    样式操作

    $('.class').addClass("hide")	为标签添加一个样式
    $('.class').removeClass("hide")	为标签移除一个样式
    $('.class').toggleClass("hide")	如果存在就删除,不存在就添加
    
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         .shadow{
     8             background-color: black;
     9             opacity: 0.5;
    10             position: fixed;
    11             left: 0;
    12             right: 0;
    13             top: 0;
    14             bottom: 0;
    15             z-index: 9;
    16         }
    17         .hide{
    18             display: none;
    19         }
    20     </style>
    21 </head>
    22 <body>
    23     <div class="shadow"></div>
    24     <input type="button" value="开关" id="i1" style="position: fixed; z-index: 10" />
    25     <script src="jquery-1.12.4.js"></script>
    26     <script>
    27         $('#i1').click(function () {
    28             $('.shadow').toggleClass('hide')
    29         })
    30     </script>
    31 </body>
    32 </html>
    示例:开关灯

    属性操作

    # 专门用于做自定义属性
    $(..).attr('type')	获取type属性的值
    $(..).attr('type','text')	设置该属性的值
    $(..).removeAttr('type')	删除这个属性
    
    # 专门用于chekbox,radio
    $(..).prop('checked')
    $(..).prop('checked',true)

    $(..).index()  获取该标签在父标签的第几个位置
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         .menu{
     8             height: 38px;
     9             background-color: #eeeeee;
    10             line-height: 38px;
    11         }
    12         .menu .menu-item{
    13             float: left;
    14             border-right: 1px solid red;
    15             padding: 0 5px;
    16             cursor: pointer;
    17         }
    18         .hide{
    19             display: none;
    20         }
    21         .active{
    22             background-color: #1AC567;
    23         }
    24     </style>
    25 </head>
    26 <body>
    27     <div style="margin:0 auto; 500px;height: 400px;border: 1px solid red">
    28         <div class="menu">
    29             <div class="menu-item active " a='1'>菜单1</div>
    30             <div class="menu-item "a='2'>菜单2</div>
    31             <div class="menu-item "a='3'>菜单3</div>
    32         </div>
    33         <div class="content">
    34             <div b="1">内容一</div>
    35             <div class="hide"  b="2">内容二</div>
    36             <div class="hide" b="3">内容三</div>
    37         </div>
    38     </div>
    39 
    40     <script src="jquery-1.12.4.js"></script>
    41     <script>
    42         $('.menu-item').click(function () {
    43             $(this).addClass("active").siblings().removeClass('active');
    44             var target=$(this).attr('a');
    45             $(".content div[b='"+target+"']").removeClass('hide').siblings().addClass('hide')
    46         })
    47 
    48     </script>
    49 </body>
    50 </html>
    示例:菜单操作

    文档处理

    $(this).append('<a>123</a>')	在该标签的子标签最后添加样式
    $(this).prepend('<a>123</a>')	在该标签的子标签最前添加样式
    $(this).after('<a>123</a>')	在该标签的最后添加样式
    $(this).before('<a>123</a>')	在该标签的最前添加样式
    
    $(this).remove('<a>123</a>')	删除该标签,渣都不剩
    $(this).empty('<a>123</a>')	删除该标签,还剩点渣
    
    var v = $(this).clone('<a>123</a>')  克隆该标签
    $(this).parent.append(v)	    放在他爹下面
    
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <input id=t1 type="text"  />
     9     <input id=a1 type="button" value="添加" />
    10     <input id=a2 type="button" value="删除" />
    11     <input id=a3 type="button" value="复制" />
    12 
    13     <ul id="u1">
    14         <li>1</li>
    15         <li>2</li>
    16     </ul>
    17 
    18     <script src="jquery-1.12.4.js"></script>
    19 
    20     <script>
    21         $("#a1").click(function () {
    22             var v=$('#t1').val();
    23             var text="<li>"+ v + "</li>";
    24             $('#u1').append(text)
    25         });
    26         $("#a2").click(function () {
    27             var index=$("#t1").val();
    28             $('#u1 li').eq(index).em()
    29         })
    30         $("#a3").click(function () {
    31             var index=$("#t1").val()
    32             var v=$('#u1 li').eq(index).clone()
    33             $("#u1").append(v)
    34         })
    35 
    36     </script>
    37 </body>
    38 </html>
    示例:添加,删除,复制

    CSS操作

    $('#t1').css('样式名称', '样式值')
    
    点赞示例:
    	 - $('t1').append()
    	 - $('t1').remove()
    	 - setInterval
    	 - 透明度 1 > 0
    	 - position:absolute
    	 - 字体大小,位置
    
     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 #dddddd;
    10         }
    11         .item{
    12             position: relative;
    13             width: 30px;
    14         }
    15     </style>
    16 </head>
    17 <body>
    18     <div class="container">
    19         <div class="item">
    20             <span></span>
    21         </div>
    22     </div>
    23     <div class="container">
    24         <div class="item">
    25             <span></span>
    26         </div>
    27     </div>
    28     <div class="container">
    29         <div class="item">
    30             <span></span>
    31         </div>
    32     </div>
    33     <div class="container">
    34         <div class="item">
    35             <span></span>
    36         </div>
    37     </div>
    38 
    39     <script src="jquery-1.12.4.js"></script>
    40     <script>
    41         $('.item').click(function () {
    42             AddFavor(this);
    43         });
    44         function AddFavor(self) {
    45             var fontSize = 15;
    46             var right = 0;
    47             var top= 0;
    48             var opacity=1;
    49             var tag = document.createElement('span');
    50             $(tag).css('color','green');
    51             $(tag).text('+1');
    52             $(tag).css('position','absolute');
    53             self.append(tag);
    54             //console.log(self)
    55             var obj=setInterval(function () {
    56                 fontSize = fontSize + 10;
    57                 top = top - 10;
    58                 right = right - 10;
    59                 opacity = opacity - 0.1;
    60 
    61                 $(tag).css('fontSize',fontSize+'px');
    62                 $(tag).css('right',right+'px');
    63                 $(tag).css('top',top+'px');
    64                 $(tag).css('opacity',opacity);
    65 
    66                 if(opacity<0){
    67                     clearInterval(obj);
    68                     $(tag).remove()
    69                 }
    70 
    71             },40)
    72 
    73 
    74         }
    75     </script>
    76 </body>
    77 </html>
    点赞示例

    位置

    位置:
    	$(window).scrollTop()  获取滚轮所在位置
    	$(window).scrollTop(0) 设置滚轮所在位置
    	$(window).scrollLeft([val])	左右的
    	
    	offset().left                 指定标签在html(整个文档就是浏览器)中的坐标
    	offset().top                  指定标签在html中的坐标   用于拖动窗口
    	
    	position() 	                  指定标签相对父标签(relative)标签的坐标(离他爹的div在浏览器中的位置坐标)
    	
    	<div style='relative'>
    		<div>
    			<div id='i1' style='position:absolute;height:80px;border:1px'></div>
    		</div>
    	</div>
    	
    	
    	$('i1').height()           # 获取标签的高度 纯高度
    	$('i1').innerHeight()      # 纯高度 + 内边距(padding)
    	$('i1').outerHeight()      # 获取边框 + 纯高度 + 内边距
    	$('i1').outerHeight(true)  # 获取边框 + 纯高度 + 内边距 + 外边距
    	
    	# 纯高度,边框,外边距,内边距
    

    绑定事件

    #从上到下逐行执行如果有地方卡住就卡在那
    $('.c1').click()
    
    $('.c1').bind('click',function(){	两两一套
    	
    })
    
    $('.c1').unbind('click',function(){
    	
    })
    
    ***
    $('.c').delegate('a', 'click', function(){	委托(在一开始没绑定,直到点击时绑定事件然后执行)
    
    })
    $('.c').undelegate('a', 'click', function(){	用于添加时也要绑定事件
    
    })
    
    $('.c1').on('click', function(){	所有的绑定事件都是基于on来实现的
    
    })
    $('.c1').off('click', function(){
    
    })
    
    阻止事件发生
    	return false
    	
    # 当页面框架加载完成之后,自动执行
    $(function(){
    	
    	$(...)
    	
    })
    
     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 
    14     <form id="f1" action="s5.html" method="POST">
    15         <div><input name="n1" tex = "用户名" type="text" /></div>
    16         <div><input name="n2" tex = "密码" type="password" /></div>
    17         <div><input name="n3" tex = "邮箱" type="text" /></div>
    18         <div><input name="n4" tex = "端口" type="text" /></div>
    19         <div><input name="n5" tex = "IP" type="text" /></div>
    20 
    21         <input type="submit" value="提交" />
    22 
    23     </form>
    24     <script src="jquery-1.12.4.js"></script>
    25     <script>
    26         // 当页面框架加载完毕后,自动执行
    27 //        $(function(){
    28 //            $.Login('#f1')
    29 //        });
    30 
    31 
    32 
    33         $(function(){
    34             // 当页面所有元素完全加载完毕后,执行
    35             $(':submit').click(function () {
    36                 $('.error').remove();
    37                 var flag = true;
    38                 $('#f1').find('input[type="text"],input[type="password"]').each(function () {
    39                     var v = $(this).val();
    40                     var n = $(this).attr('tex');
    41                     if(v.length <= 0){
    42                         flag = false;
    43                         var tag = document.createElement('span');
    44                         tag.className = "error";
    45                         tag.innerHTML = n + "必填";
    46                         $(this).after(tag);
    47                         // return false;
    48                     }
    49                 });
    50                 return flag;
    51 
    52         });
    53 
    54 
    55         });
    56 
    57 
    58 
    59 //        $(':submit').click(function () {
    60 //            var v = $(this).prev().val();
    61 //            if(v.length > 0){
    62 //                return true;
    63 //            }else{
    64 //                alert('请输入内容');
    65 //                return false
    66 //            }
    67 //        })
    68 
    69     </script>
    70 </body>
    71 </html>
    登录页面判断是否输入
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <a onclick="return ClickOn()"  href="http://www.oldboyedu.com">走你1</a>
     9 
    10     <a id="i1" href="http://www.oldboyedu.com">走你2</a>
    11     <script src="jquery-1.12.4.js"></script>
    12     <script>
    13         function ClickOn() {
    14             alert(123);
    15             return true;
    16         }
    17         $('#i1').click(function () {
    18             alert(456);
    19             return false;
    20         })
    21     </script>
    22 </body>
    23 </html>
    示例:阻止事件发生

    jQuery扩展

    方法一、直接在JavaScript文件里写
    
    $.extend({
    	'abc':function(){
    		return 'sb';
    	}
    })
    
    调用 var v = $.abc();
    	 alert(v);
    	 
    当导入多个JavaScript模块时,如果有相同名称的调用方法或者相同名称的全局变量就会很尴尬
    所以要按照方法二这样写,直接写一个自执行函数
    
    方法二、
    (function(arg){
    	var status = 1;
    	arg.extend({
    		'abc':function(){
    			return 'sb';
    		}
    	})
    })($);
    
    调用 var v = $.abc();
    	 alert(v);
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6     <style>
      7         .shadow{
      8             position: fixed;
      9             left: 0;
     10             right: 0;
     11             top: 0;
     12             bottom: 0;
     13             background-color: black;
     14             opacity: 0.5;
     15             z-index: 10;
     16         }
     17         .modal{
     18             width: 500px;
     19             height: 400px;
     20             text-align: center;
     21             line-height: 0;
     22             position: fixed;
     23             left: 50%;
     24             top: 50%;
     25             background-color: gold;
     26             margin-top: -200px;
     27             margin-left: -250px;
     28             z-index: 11;
     29         }
     30         .modal2{
     31             width: 500px;
     32             height: 400px;
     33             text-align: center;
     34             line-height: 0;
     35             position: fixed;
     36             left: 50%;
     37             top: 50%;
     38             background-color: gold;
     39             margin-top: -200px;
     40             margin-left: -250px;
     41             z-index: 11;
     42         }
     43         .hide{
     44             display: none;
     45         }
     46     </style>
     47 </head>
     48 <body>
     49     <a id="i1">添加</a>
     50     <table border="1" id="i4">
     51         <tr><td taget="ip" a="1">1.1.1.1</td><td taget="port">80</td><td><a class="edit">编辑</a>|<a class="del">删除</a></td></tr>
     52         <tr><td taget="ip" a="2">1.1.1.2</td><td taget="port">80</td><td><a class="edit">编辑</a>|<a class="del">删除</a></td></tr>
     53         <tr><td taget="ip" a="3">1.1.1.3</td><td taget="port">80</td><td><a class="edit">编辑</a>|<a class="del">删除</a></td></tr>
     54         <tr><td taget="ip" a="4">1.1.1.4</td><td taget="port">80</td><td><a class="edit">编辑</a>|<a class="del">删除</a></td></tr>
     55     </table>
     56     <div class="shadow hide">123</div>
     57     <div class="modal hide">
     58         <p><input type="text" name="ip" /></p>
     59         <p><input type="text" name="port" /></p>
     60 
     61 
     62         <input id="i2" type="button" value="确定" />
     63         <input calss="i3" type="button" value="取消" />
     64     </div>
     65     
     66     <div class="modal2 hide">
     67         <p><input type="text" name="ip" /></p>
     68         <p><input type="text" name="port" /></p>
     69 
     70         <input id="i5" type="button" value="确定" />
     71         <input class="i3" type="button" value="取消" />
     72     </div>
     73 
     74     <script src="jquery-1.12.4.js"></script>
     75     <script>
     76         $('#i1').click(function () {
     77             $('.modal,.shadow').removeClass('hide')
     78         });
     79         $('#i2').click(function () {
     80             var tr = document.createElement('tr');
     81             var flag=true;
     82             $(this).prevAll().children().each(function () {
     83                 var td = document.createElement('td');
     84                 var name = $(this).attr("name");
     85                 var text = $(this).val();
     86                 if(text.length<=0){
     87                     alert(name+"不能为空");
     88                     flag=false;
     89 
     90                 }else{
     91                     td.innerHTML = $("[name="+name+"]").val();
     92                     tr.prepend(td);
     93                 }
     94             });
     95 
     96             if(flag){
     97                 var td3 = document.createElement('td');
     98                 td3.innerHTML = '<a>编辑</a>|<a class="del">删除</a>';
     99                 tr.append(td3);
    100                 $("#i4").append(tr);
    101                 }
    102             $('.modal,.shadow').addClass('hide');
    103         });
    104         $(".i3").click(function () {
    105             $('.modal,.shadow,.modal2').addClass('hide')
    106         });
    107         $(".del").click(function () {
    108             $(this).parent().parent().remove()
    109         });
    110 
    111         $(".edit").click(function () {
    112             $('.modal2,.shadow').removeClass('hide');
    113             $(this).parent().prevAll().each(function () {
    114                 var text = $(this).text();
    115                 var n = $(this).attr('taget');
    116                 $('[name='+n+']').val(text)
    117             });
    118         })
    119 
    120     </script>
    121 </body>
    122 </html>
    添加,删除
  • 相关阅读:
    讲清楚之 javascript 参数传值
    JS+CSS3 360度全景图插件
    一些个人感觉很不错的特效
    从ES6重新认识JavaScript设计模式(三): 建造者模式
    动态监听输入框值的变化
    React Native基础&入门教程:调试React Native应用的一小步
    这儿有一个使你网页性能提升10倍的工具
    业务连续性实战
    strong and weak 强引用和弱引用的差别
    Codeforces Round #254 (Div. 2):B. DZY Loves Chemistry
  • 原文地址:https://www.cnblogs.com/x54256/p/7757830.html
Copyright © 2020-2023  润新知