• jQuery


    jQuery

    jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。推荐一个学习Jquery网站:http://jquery.cuishifeng.cn/

    Jquery 分为三个版本:1.0x 2.0x 3.0x(推荐使用1.0x,因为兼容性更好。)jQuery包又分为:压缩版和普通版(学习建议用普通版可以看源码,上线中要用压缩版)

    jquery和DOM之间可以互相转换: 

      jQuery对象[0] ==> DOM对象
      DOM对象 ==> $(DOM对象)

    (如果jQuery对象封装的功能不够强大,可以利用他们之间的互相转换,来用DOM扩写jquery对象)

    查找元素,DOM有10个左右语句,jQuery中有以下:

     选择器

    选择器,直接找到某个或者某类标签
    
    1,	id
    		$('#id')
    	
    2,	class
    		$(".class")
    	
    3,	标签
    		$("a")
    	
    4,	组合
    		$("#i1,.c1,a") 找到id为1,class为c1,标签为a	
    
    5,	层级
    	
    		$("i1 a")	找id为1下面的所有a标签,子子孙孙
    		$("i1">"a") 找id为1下a标签(第一层),儿子
    				
    6,	基本筛选器
    	:first	获取匹配的第一个元素
    	:not
    	:last
    	
    7,	:eq(index)	根据索引来找  
    	:gt(index)
    	:lt(index)
    		$('a:eq(2)')   找a标签的索引为2的元素
    
    8,	["属性"]
    		$("alex")			具有alex属性的标签
    		$('[alex="123"]')	alex='123'的标签
    		
    	表单选择器:其实学完上述,完全不用学对表单的查找。表单只不过在上述的简写
    		<input type='text'/>
    		<input type='text'/>
    		<input type='file'/>
    		<input type='password'/>
    		
    		$('input[type="text"]')	通过属性选择器找
    		$(':text')				通过表单选择器找(可以看出是上述的简写)
    	
    	表单属性跟上述类似
    

      

    实例:全选,反选,取消

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<table border="1" id="tb">
    		<input type="button" value="全选" onclick="selectAll();"/>
    		<input type="button" value="反选" onclick="reverseAll();"/>
    		<input type="button" value="取消" onclick="cancelAll();"/>
    		<thead>
    			<tr>
    				<th>选项</th>
    				<th>IP</th>
    				<th>端口</th>
    			</tr>
    		</thead>
    		<tbody>
    			<tr>
    				<td><input type="checkbox"/></td>
    				<td>10.1.1.1</td>
    				<td>80</td>
    			</tr>
    			<tr>
    				<td><input type="checkbox"/></td>
    				<td>10.1.1.2</td>
    				<td>8080</td>
    			</tr>
    			<tr>
    				<td><input type="checkbox"/></td>
    				<td>10.1.1.3</td>
    				<td>8000</td>
    			</tr>
    
    		</tbody>
    	</table>
    
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		function selectAll() {
    		$('#tb :checkbox').prop('checked',true);
    		}
    		function cancelAll() {
    		$('#tb :checkbox').prop('checked',false);
    		}
    		// 第一种方式:原始的DOM方式
    //        function reverseAll() {
    //           var tb = $('#tb :checkbox');
    //            for(var i=0;i<tb.length;i++){
    //                if(tb[i].checked){
    //                    tb[i].checked = false;
    //                }
    //                else{
    //                    tb[i].checked = true;
    //                }
    //            }
    //        }
    		// 第二种方式:也是利用DOM方式
    //        function reverseAll() {
    //            $('#tb :checkbox').each(function () {
    //                //this代指当前循环的每一个元素,如果函数中有参数k,k则表示下标
    //                //反选
    //                //console.log(this) 此时的this对象为DOM对象
    //                //console.log($(this)),
    //                if (this.checked) {
    //                    this.checked = false;
    //                } else {
    //                    this.checked = true;
    //                }
    //            })
    //        }
    		//第三种方式:利用jQuery方式
    //        function reverseAll() {
    //            $('#tb :checkbox').each(function () {
    //                if($(this).prop('checked')){
    //                    $(this).prop('checked',false);
    //                }else{
    //                    $(this).prop('checked',true);
    //                }
    //            })
    //        }
    		//第四种方式:三元运算
    		function reverseAll() {
    			$('#tb :checkbox').each(function () {
    				var v = $(this).prop('checked')?false:true;
    				$(this).prop('checked',v);
    			})
    		}
    
    	</script>
    </body>
    </html>

    总结:

      1,   $(this).prop('checked') 获取值
      2,   $(this).prop('checked',false) 设置值

      3,   $('#tb :checkbox').each() Jquery方法内置循环

           $('#tb :checkbox').each(function (k) {
              //k则表示当前索引
              //this,DOM,当前循环的元素 $(this)
            }
      4, 三元运算
            var v = 条件?真值:假值

    筛选器:(常用)

    $('i1').next()				下一个标签
    $('i1').prev()				上一个标签
    $('i1').parent()			父标签
    $('i1').children()			孩子标签
    $('i1').siblings()			兄弟标签
    $('i1').find('.content')	在子子孙孙中找class为content的标签
    
    $('li').eq(1)	根据索引进行筛选,注意和选择器的区别  $('li:eq(1)')(效果是一样的) 区别:一个是字符串,一个是变量
    $('#i1').nextUntil('i5')	查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止
    $('#i1').nextAll()			从i1向下所有的
    $('#i1').prevAll()			从i1向上所有的
    $('#i1').prevUntil('i5')	从i1向上直到i5
    $('i1').parents()			从父标签一直找到祖宗
    $('i1').parentsUntil('.c1')	从父标签一直找到'c1'为止
    

      示例2:筛选器以及Tab菜单示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    	<style>
    		.item .header{
    			height: 38px;
    			background-color: #2568aa;
    			color: white;
    			line-height: 35px;
    		}
    		.hide{
    			display: none;
    		}
    	</style>
    </head>
    <body>
    	<div>
    		<div class="item">
    			<div id="i1" class="header">菜单一</div>
    			<div class="content hide">
    				<div>内容一</div>
    				<div>内容一</div>
    				<div>内容一</div>
    			</div>
    		</div>
    		<div class="item">
    			<div class="header">菜单二</div>
    			<div class="content hide">
    				<div>内容二</div>
    				<div>内容二</div>
    				<div>内容二</div>
    			</div>
    		</div>
    		<div class="item">
    			<div class="header">菜单三</div>
    			<div class="content hide">
    				<div>内容三</div>
    				<div>内容三</div>
    				<div>内容三</div>
    			</div>
    		</div>
    	</div>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		// 1,第一种方式jQuery(DOM的方式也能实现,只不过实现起来比较复杂,前面写过)
    	   //$('.header').click(function () {
    		//    $(this).next().removeClass('hide')
    		//     $(this).parent().siblings().find('.content').addClass('hide')
    	   //   })
    
    	   // 2,第二种方式jQuery(链式编程)
    		$('.header').click(function () {
    			$(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide')
    		})
    	</script>
    </body>
    </html>		
    

     总结:

    1, jQuery绑定事件
      $('.header').click(function () {
          xxxx
      }

    2, 添加样式和移除样式
      $('.i1').addClass('.hide')
      $('.i1').removeClass('.hide')

    3, 筛选器实在选择器的基础之上再进行选择(下面为常用的筛选器)
      $(this).next() 下一个标签
      $(this).prev() 上一个标签
      $(this).parent() 父标签
      $(this).children() 孩子标签
      $(this).siblings() 兄弟标签
      $(this).find('.content') 在子子孙孙中找class为content的标签,同一级标签不能用find

    4, jQuery支持链式编程

     

    文本操作

    $(..).text()			#获取文本内容
    $(..).text("<a>1</a>")	#设置文本内容
    
    $(..).html()			# 
    $(..).html("<a>1</a>")	#
    
    $(..).val()				#获取value值
    $(..).val(..)			#设置value值
    

      示例:模态编辑框2

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    	<style>
    		.modal{
    			position: fixed;
    			top:50%;
    			left: 50%;
    			margin-top: -200px;
    			margin-left: -250px;
    			border: 1px black solid;
    			height: 400px;
    			 500px;
    			background: #ddd;
    			z-index: 10;
    		}
    		#i1{
    			border: 1px black solid;
    		}
    		.shadow{
    			position: fixed;
    			top: 0;
    			bottom: 0;
    			left: 0;
    			right: 0;
    			background: black;
    			opacity: 0.6;
    			z-index: 9;
    		}
    		.hide{
    			display: none;
    		}
    	</style>
    </head>
    <body>
    	<a id="i1">添加</a>
    	<table border="1">
    		<tr>
    			<td>10.1.1.1</td>
    			<td>80</td>
    			<td>
    				<a class="edit">编辑</a> | <a>删除</a>
    			</td>
    		</tr>
    		<tr>
    			<td>10.1.1.2</td>
    			<td>8080</td>
    			<td>
    				<a class="edit">编辑</a> | <a>删除</a>
    			</td>
    		</tr>
    		<tr>
    			<td>10.1.1.3</td>
    			<td>8000</td>
    			<td>
    				<a class="edit">编辑</a> | <a>删除</a>
    			</td>
    		</tr>
    	</table>
    	<div class="modal hide">
    		<div>
    			<input name="hostname" type="text">
    			<input name="port" type="text">
    		</div>
    		<div>
    			<input id="i2" type="button" value="确定">
    			<input id="i3" type="button" value="取消">
    		</div>
    	</div>
    	<div class="shadow hide">
    
    	</div>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$("#i1").click(function () {
    			$(".modal, .shadow").removeClass('hide');
    			$('.modal input[type="text"]').val("");
    		});
    		$("#i3").click(function () {
    //            $(this).parent().addClass('hide').next().addClass('hide')
    			$(".modal, .shadow").addClass('hide')
    		});
    	   $(".edit").click(function () {
    		   $(".modal, .shadow").removeClass('hide');
    		   var tds = $(this).parent().prevAll();
    		   //循环获取tds中的内容
    		   //复制给input标签中的value
    		   var port = $(tds[0]).text();
    		   var host = $(tds[1]).text();
    		   $('.modal input[name="hostname"]').val(host);
    		   $('.modal input[name="port"]').val(port);
    	   })
    	</script>
    </body>
    </html>
    

      

    样式操作

    addClass()
    removeClass()			
    toggleClass				#如果存在(不存在)就删除(添加)一个类。
    

      示例:样式操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    	<style>
    		.hide{
    			display: none;
    		}
    	</style>
    </head>
    <body>
    	<input id="i1" type="button" value="开关">
    	<div class="c1 hide">hello world</div>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		//第一种方式:
    //        $("#i1").click(function () {
    //            if($(".c1").hasClass("hide")){
    //            $(".c1").removeClass('hide');
    //            }else{
    //               $(".c1").addClass('hide');
    //            }
    //        });
    
    		//第二种方式:
    		$("#i1").click(function () {
    			$(".c1").toggleClass('hide')
    		})
    	</script>
    </body>
    </html>
    

      

    属性操作

    #专门做自定义的属性的
    $(..).attr()			#获取属性值
    $(..).attr('n','v')		#设置属性值
    $(..).removeAttr('n')	#移除属性值
    
    
    <input type="checkbox" id="i1" checked="checked"/>   #DOM方式选中
    
    $('#i1').attr('checked','checked')  
    #Jquery选中操作,第一次可以,然后取消(removeAttr),如果再次选中会出问题,发现选中不了,jQuery1和jQuery2版本都有此
    问题(bug),即Query3版本中才得到解决,在版本1中,可以用prop来专门解决这个问题。
    
    
    #专门用于checkbox(复选),radio(单选)
    $(..).prop()
    
    $(..).prop('checked')			#获取值
    $('#i1').prop('checked',true)	#设置值
    $('#i1').prop('checked',false)
    

      

    示例:通过属性实现模态编辑框(需要在上述模态编辑框2的基础上增加td属性,属性值和下面输入框中值建立关联)

    <!DOCTYPE html>
    			<html lang="en">
    			<head>
    				<meta charset="UTF-8">
    				<title>Title</title>
    				<style>
    					.modal{
    						position: fixed;
    						top:50%;
    						left: 50%;
    						margin-top: -200px;
    						margin-left: -250px;
    						border: 1px black solid;
    						height: 400px;
    						 500px;
    						background: #ddd;
    						z-index: 10;
    					}
    					#i1{
    						border: 1px black solid;
    					}
    					.shadow{
    						position: fixed;
    						top: 0;
    						bottom: 0;
    						left: 0;
    						right: 0;
    						background: black;
    						opacity: 0.6;
    						z-index: 9;
    					}
    					.hide{
    						display: none;
    					}
    				</style>
    			</head>
    			<body>
    				<a id="i1">添加</a>
    				<table border="1">
    					<tr>
    						<td target="hostname">10.1.1.1</td>
    						<td target="port">80</td>
    						<td>
    							<a class="edit">编辑</a> | <a>删除</a>
    						</td>
    					</tr>
    					<tr>
    						<td target="hostname">10.1.1.2</td>
    						<td target="port">8080</td>
    						<td>
    							<a class="edit">编辑</a> | <a>删除</a>
    						</td>
    					</tr>
    					<tr>
    						<td target="hostname">10.1.1.3</td>
    						<td target="port">8000</td>
    						<td>
    							<a class="edit">编辑</a> | <a>删除</a>
    						</td>
    					</tr>
    				</table>
    				<div class="modal hide">
    					<div>
    						<input name="hostname" type="text">
    						<input name="port" type="text">
    					</div>
    					<div>
    						<input id="i2" type="button" value="确定">
    						<input id="i3" type="button" value="取消">
    					</div>
    				</div>
    				<div class="shadow hide">
    
    				</div>
    				<script src="jquery-1.12.4.js"></script>
    				<script>
    					$("#i1").click(function () {
    						$(".modal, .shadow").removeClass('hide');
    						$('.modal input[type="text"]').val("");
    					});
    					$("#i3").click(function () {
    			//            $(this).parent().addClass('hide').next().addClass('hide')
    						$(".modal, .shadow").addClass('hide')
    					});
    				   $(".edit").click(function () {
    					   $(".modal, .shadow").removeClass('hide');
    					   var tds = $(this).parent().prevAll();
    					   tds.each(function () {
    						   //获取target属性
    						   var n = $(this).attr('target');
    						   //获取td中的内容
    						   var text = $(this).text();
    						   var a1 = '.modal input[name="';
    						   var a2 = '"]';
    						   var tmp = a1 + n + a2;
    						   $(tmp).val(text)
    					   });
    				   })
    				</script>
    			</body>
    			</html>
    

      总结:这个跟上一个相比的好处,就是以后无论td增加多少列,比如除了hostname,port之外再增加IP列就无需再做任何的操作。

    示例:TAB切换菜单

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    	<style>
    		.hide{
    			display: none;
    		}
    		.menu{
    			height: 38px;
    			line-height: 38px;
    			background: #eeeeee;
    		}
    		.active{
    			background-color: brown;
    		}
    		.menu .menu-item{
    			float: left;
    			border-right: 1px solid red;
    			padding: 0 5px;
    			cursor: pointer;
    			/*鼠标聚焦显示小手*/
    		}
    		.content{
    			min-height: 100px;
    			border: 1px solid #eeeeee;
    		}
    	</style>
    </head>
    <body>
    	<div style=" 700px;margin: 0 auto">
    		<div class="menu">
    			<div class="menu-item active" a="1">菜单一</div>
    			<div class="menu-item" a="2">菜单二</div>
    			<div class="menu-item" a="3">菜单三</div>
    		</div>
    		<div class="content">
    			<div b="1">内容一</div>
    			<div b="2" class="hide">内容二</div>
    			<div b="3" class="hide">内容三</div>
    		</div>
    	</div>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$('.menu-item').click(function () {
    			$(this).addClass('active').siblings().removeClass('active');
    			//第一种方式:通过自定义属性的方式
    //            var tmp = $(this).attr('a');
    //            $('.content div[b="' + tmp + '"]').removeClass('hide').siblings().addClass('hide');
    
    			//第二种方式:通过索引的方式(这时就可以把自定义的属性‘a’和‘b’去掉)
    			var ind = $(this).index();
    			$('.content').children().eq(ind).removeClass('hide').siblings().addClass('hide')
    		})
    	</script>
    </body>
    </html>
    

     总结:

      1,小知识点,鼠标聚焦显示小手,cursor: pointer
      2, jQuery对象操作可以使用index进行索引操作
      3,第二种方式依然可以用字符串拼接的方式去实现。
      $(".content").children(":eq(" + ind + ")").removeClass('hide').siblings().addClass('hide')

    文档操作

    $("ul").append(temp)		内部后面插入
    $("ul").prepend(temp)		内部前面插入
    appendTo	          相当于把在‘temp’内部后面插入'ul',像append前后元素顺序调过来
    prependTo	          类似
    
    $("ul").after(temp)		外部后面插入
    $("ul").before(temp)		外部前面插入
    
    var index = $('#t1').val();
    $('ul li').eq(index).remove()	删除
    $('ul li').eq(index).empty()	只删除内容(如果是项目,项目符号保留)
    clone				克隆
    

      示例:内容操作(添加,删除,复制)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<input id="t1" type="text">
    	<input id="a1" type="button" value="添加">
    	<input id="a2" type="button" value="删除">
    	<input id="a3" type="button" value="复制">
    	<ul id="ul">
    		<li>a</li>
    		<li>b</li>
    		<li>c</li>
    		<li>d</li>
    		<li>e</li>
    	</ul>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$('#a1').click(function () {
    			var v = $('#t1').val();
    			var temp = "<li>" + v + "</li>" ;
    		  //  $("ul").append(temp)
    			$("ul").prepend(temp);
    		  //  $("ul").after(temp)
    		  //  $("ul").before(temp)
    		});
    		$("#a2").click(function () {
    			var index = $('#t1').val();
    			$('ul li').eq(index).remove();
    //            $('ul li').eq(index).empty();
    		});
    		$("#a3").click(function () {
    			var index = $('#t1').val();
    			var v = $('ul li').eq(index).clone();
    			$("#ul").append(v);
    		});
    	</script>
    </body>
    </html>
    

      

    模态对话框(编辑,删除)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .modal{
                position: fixed;
                top:50%;
                left: 50%;
                margin-top: -200px;
                margin-left: -250px;
                border: 1px black solid;
                height: 400px;
                 500px;
                background: #ddd;
                z-index: 10;
            }
            #i1{
                border: 1px black solid;
            }
            .shadow{
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                background: black;
                opacity: 0.6;
                z-index: 9;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
        <a id="i1">添加</a>
        <table border="1" id="tb">
            <tr>
                <td target="hostname">10.1.1.1</td>
                <td target="port">80</td>
                <td>
                    <a class="edit">编辑</a> | <a class="del">删除</a>
                </td>
            </tr>
            <tr>
                <td target="hostname">10.1.1.2</td>
                <td target="port">8080</td>
                <td>
                    <a class="edit">编辑</a> | <a class="del">删除</a>
                </td>
            </tr>
            <tr>
                <td target="hostname">10.1.1.3</td>
                <td target="port">8000</td>
                <td>
                    <a class="edit">编辑</a> | <a class="del">删除</a>
                </td>
            </tr>
        </table>
        <div class="modal hide">
            <div>
                <input name="hostname" type="text">
                <input name="port" type="text">
            </div>
            <div>
                <input id="i2" type="button" value="确定">
                <input id="i3" type="button" value="取消">
            </div>
        </div>
        <div class="shadow hide">
    
        </div>
        <script src="../task/jquery-1.12.4.js"></script>
        <script>
            $("#i1").click(function () {
                $(".modal, .shadow").removeClass('hide');
                $('.modal input[type="text"]').val("");
            });
            $("#i3").click(function () {
    //            $(this).parent().addClass('hide').next().addClass('hide')
                $(".modal, .shadow").addClass('hide')
            });
           $(".edit").click(function () {
               $(".modal, .shadow").removeClass('hide');
               var tds = $(this).parent().prevAll();
               tds.each(function () {
                   //获取target属性
                   var n = $(this).attr('target');
                   //获取td中的内容
                   var text = $(this).text();
                   var a1 = '.modal input[name="';
                   var a2 = '"]';
                   var tmp = a1 + n + a2;
                   $(tmp).val(text)
               });
           });
            $('.del').click(function () {
                $(this).parent().parent().remove()
            });
            $('#i2').click(function () {
                var tr = document.createElement('tr');
               $(".modal input[type='text']").each(function () {
                   var td = document.createElement('td');
                   //获取当前标签的"name"属性
                   var name = $(this).attr("name");
                   //设置生成的'target'属性, $(td)把DOM对象转换成jQuery对象
                   $(td).attr('target', name);
    
                   //把输入的内容赋值给生成的td内容中去
                   td.innerHTML = $(this).val();
                   $(tr).append(td);
               });
                 var td1 = document.createElement('td');
                $(td1).append('<a class="edit">编辑</a> | <a class="del">删除</a>');
                $(tr).append(td1);
                //最后要把tr添加到table标签中
                $('#tb').append(tr);
    
            })
        </script>
    </body>
    </html>
    

      

    CSS操作

    (和class相比粒度比较细)
    
    $("t1").css("样式名称", "样式值")
    抽屉点赞:
    	- $("t1").append()
    	- setInterval()
    	- opacity(透明度)
    	- position
    	- 字体
    

      

    示例:动态点赞功能

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    	<style>
    		.container{
    			padding: 50px;
    			border: 1px solid #dddddd;
    		}
    		.item{
    			position: relative;
    			 30px;
    		}
    	</style>
    </head>
    <body>
    	<div class="container">
    		<div class="item">
    			<span>赞</span>
    		</div>
    	</div>
    	<div class="container">
    		<div class="item">
    			<span>赞</span>
    		</div>
    	</div>
    	<div class="container">
    		<div class="item">
    			<span>赞</span>
    		</div>
    	</div>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$(".item").click(function () {
    			AddFavor(this);
    		});
    
    		function AddFavor(self) {
    			var tag = document.createElement('span');
    			var fontSize = 12;
    			var bottom = 0;
    			var left = 0;
    			var opacity = 1;
    			//DOM对象
    			$(tag).text("+1");
    			$(tag).css("color", "green");
    //            $(tag).css("backgroundColor", "red");
    			$(tag).css("bottom", bottom);
    			$(tag).css("fontSize", fontSize);
    			$(tag).css("left", left);
    			$(tag).css("position", "absolute");
    			$(tag).css("opacity", opacity);
    			$(self).append(tag);
    
    			var obj = setInterval(function () {
    				fontSize = fontSize + 10;
    				bottom = bottom + 2;
    				left = left + 2;
    				opacity = opacity - 0.2;
    				$(tag).css("bottom", bottom + "px");
    				$(tag).css("fontSize", fontSize + "px");
    				$(tag).css("left", left + "px");
    				$(tag).css("opaci ty", opacity);
    //                console.log(opacity);
    				
    				// 当透明度小于1时清除定时器
    				if(opacity < 0){
    					clearInterval(obj);
    					//并把tag标签框去掉
    					$(tag).remove()
    				}
    			}, 100);
    		}
    	</script>
    </body>
    </html>
    

      

    位置

    scrollTop()			# 获取匹配元素相对滚动条顶部的偏移
    scrollTop([val])	# 设置	
    
    scrollleft([val])	# 同上
    
    scrollTop(0)		# 返回顶部
    
    offset				# 指定标签在HTML中的坐标
    
    $('.content').offset()
    $('.content').offset().top
    $('.content').offset().left
    
    position			# 指定标签相对父标签(relative)的标签的坐标
    	
    $("#i1").height()		# 获取标签的高度 + ?
    $("#i1").innerHeight()	# 只获取边框+纯高度 + ?
    $("#i1").outHeight()	# 获取边框 + 纯高度 + ?
    $("#i1").outHeight(true)# 获取边框 + 纯高度 + ?
    # 纯高度,边框,外边距,内边距
    

      

    jQuery事件绑定的方式

    DOM:三种绑定方式
    
    jQuery:
    	1,第一种(常用):
    		$(".c1").click()
    		$(".c1")...
    	
    	2,第二种(常用):
    		$(".c1").bind("click", function(){})		 #绑定
    		$(".c1").onbind("click", function(){})		 #去掉绑定,和上面配合使用
    	
    	3,第三种:(重要)			
    		指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。称为“委托”
    		$('.c1').delegate('a', 'click', function(){}) # .c1下的a标签绑定事件
    		$('.c1').undelegate('a', 'click', function(){}) # 解除绑定事件
    	
    	4,第四种:
    		$(".c1").on("click",function(){})
    		$(".c1").off("click",function(){})
    

      

    示例:如何让新添加的标签立即生效,执行相应的函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<input id="t1" type="text">
    	<input id="a1" type="button" value="添加">
    	<ul id="ul">
    		<li>a</li>
    		<li>b</li>
    		<li>c</li>
    		<li>d</li>
    		<li>e</li>
    	</ul>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$('#a1').click(function () {
    			var v = $('#t1').val();
    			var temp = "<li>" + v + "</li>" ;
    			$("#ul").append(temp);
    		});
    
    
    //        $("ul li").click(function () {
    //            var v = $(this).text();
    //            alert(v)
    //        })
    			  $("ul").delegate("li","click",function () {
    			var v = $(this).text();
    			alert(v)
    		})
    
    
    	</script>
    </body>
    </html>
    

      

    jQuery事件绑定阻止事件发生,a标签默认有一个click事件

    示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<a onclick="return Clickon();" id="i1" href="http://www.qq.com">QQ</a>
    </body>
    
    
    <script>
    //    第一种:DOM方式
    	function Clickon() {
    		alert(123);
    		return true
    	}
    </script>
     <!--第二种方式jQuery-->
    <!--<script src="jquery-1.12.4.js"></script>-->
    <!--<script>-->
    	<!--$("#i1").click(function () {-->
    		<!--alert(456)-->
    		<!--return false-->
    	<!--})-->
    <!--</script>-->
    </html>
    

      

    总结:
      a标签默认有一个click事件,如果再添加一个。默认优先执行添加的然后会继续执行href中的事件。
      如何让其不再执行默认的事件,有两种方式?
        1,  DOM 需要定义事件前加入'return',然后在事件的函数中加入'return false',如果是true则会继续执行。
        2,  jQuery方式,直接在定义函数时加入'return false'就不会继续执行默认的事件了。

    示例:表单验证(重要)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<form id="i1" action="10,模态对话框(编辑,删除).html" method="post">
    		<div><input type="text" name="用户名:"/></div>
    		<div><input type="password" name="密   码:"/></div>
    		<div><input type="text" name="邮   箱:"/></div>
    		<div><input type="text" name="手机号:"/></div>
    		<div><input type="text" name="验证码:"/></div>
    		<input type="submit" value="提交"/>
    	</form>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    		$(":submit").click(function () {
    			//在提交之前清空所有的错误提示
    			$(".error").remove();
    
    			var flag = true;
    		   $("#i1").find('input[type="text"],input[type="password"]').each(function () {
    			   var v = $(this).val();
    			   if(v.length<=0){
    				   flag = false;
    				   var tag = document.createElement('span');
    				   tag.innerHTML = "必填";
    				   tag.className = "error";
    				   $(tag).css("color","red");
    				   $(this).after(tag);
    				   //return只是退出当前的循环
    				   //return false;
    			   }
    		   });
    			//如果上述循环内有任意一处为空,那么flag=False,即表单无法提交
    			return flag
    		})
    	</script>
    </body>
    </html>
    

      

    补充

    一般js写在最后,如果js的前面刚好有图片需要加载,默认当页面所有的元素加载完毕后,才会执行js,但是$(function(){xxxxxx})当页面框架加载完毕后,自动执行'xxxxxx'的内容。所以上述示例最后的代码要放在这段代码里面。

    jQuery扩展的两种方式

    - $.extend  	调用:$.方法
    - $.fn.extend	调用:$(..).方法
    
    两者的区别:定义的方式不同,调用的方式也不同
    

      

    示例:jQuery的扩展

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Title</title>
    </head>
    <body>
    	<script src="jquery-1.12.4.js"></script>
    	<script>
    // 第一种方式:
    //        $.extend({"alex": function () {
    //            return 'ok'
    //        }});
    //        var v = $.alex();
    //        alert(v)
    //
    //	第二种方式:
    		$.fn.extend({'eric':function () {
    			return 'no'
    		}});
    		var v = $("#i1").eric()
    		alert(v)
    	</script>
    </body>
    </html>
    

      

    总结:
      1,注意以后自己定义jQuery扩展的时候或者要引入第三方jQuery扩展的时候,单独写个.js文件,然后引入
      <script src='要引入.js'></script>,如果遇到重名的第三方模块,需要借助自执行函数

          (function(){
               var status = 1;
              // 封装变量(优先执行自己的变量,从而避免变量冲突的问题)
          })(jQuery)

  • 相关阅读:
    ubuntu系统下安装最新版的MySQL
    scp本地服务器和远程服务器拷贝文件
    linux设置环境变量
    PHP程序员玩转Linux系列-lnmp环境的搭建
    nginx与负载均衡
    Linux下vim的常用命令总结
    nginx与location规则
    ssh秘钥对免密码登陆
    ubuntu下安装php pdo扩展和导入数据库
    ArrayList的删除实现
  • 原文地址:https://www.cnblogs.com/yang-ning/p/7002221.html
Copyright © 2020-2023  润新知