# jquery 的工具方法
- 
对象方法  --90%,JQ 中大部分都是此方法
 $(“选择器”).do ()
().xx(),().yyy()
作用:选择 DOM 元素,然后做对应的操作
比如:
$(“div”).hide();
 
- 
工具方法 — 全局方法
$.do();   –
格式:.xxx();.yyy()
比如:
$.trim (“字符串”);针对的是字符串、对象、数组等。
 
# 常用的工具方法
- 
$.trim (“字符串”)
作用:去除首尾空格,返回去了的字符串
 
- 
$.type()
作用:类似于 JS 的 typeof  ,验证数据的类型
typeof  [];//object
typeof /abc/;//object
jquery 的 type 方法可以精确的检测对象的类型。
 
- 
$.each   全局  可以遍历数组、对象、和 DOM  重点方法
$(“div”).each ()  只能遍历 DOM 元素
用来代替 JS 的 for 循环
1 2 3 4 5 6 7 8 9 10 11 12 13
   | 1.$.each()  --全局方法(工具方法) 作用:可以遍历对象、数组、DOM元素等 $.each("对象、数组、DOM",function(index,item){           })
  2.$("选择器").each(); ---对象方法 作用:只能遍历DOM元素 $("div").each(function(index,item){      }); 使用场景:用得较少,因为JQ可以直接对元素批量操作,而不需要使用循环
   | 
 
 
- 
$.inArray()
类似于 JS 的 indexOf 方法
语法:
1
   | $.inArray('要查找的数组元素',数组);
  | 
 
 
- 
$.extend (target,obj1,obj2);  // 扩展已有的对象
将多个对象合并到一块
1 2 3 4 5 6 7 8 9 10 11 12
   | var obj={     name:'张三' } var obj2={     sex:"男" } JS:需要使用for in循环一个个遍历给另外一个对象
  JQ: $.extend(要合并的对象,对象2,对象3);   会改写原来的那个对象。 $.extend(obj,obj2);
  | 
 
 
# JQ 的两种插件
# 全局插件
步骤:
- 
使用开发模板【重点】
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | $.extend({          xxx:function(参数){              },     插件名2:function(参数){              } });
 
  $.xxx(); $.yyy();
 
  | 
 
 
- 
起一个好名字
起名有规范:
如果 jquery 插件,起名应该是
jquery. 插件名.js
jquery. 插件名.min.js  // 如果是压缩版
 
- 
写说明文档
    说明书:
    使用步骤:
    1、本插件依赖jquery环境,在使用前先导入jquery
    2、可以去掉字符串左边的空格,使用以下方法调用
		$.leftTirm("字符串");
		可以返回去掉的字符串
		。。。
	3、关注我的微博,请扫描二维码打赏我喝一杯咖啡
 
- 
宣传推广
压缩 JS 代码的工具网站:
可以根据压缩程度选择对应的压缩方式:
http://tool.chinaz.com/js.aspx
 
# 对象插件的开发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | 1. 全局方法的插件模板 ;$.extend({   插件名:function(参数){          }    }) 2.对象方法的插件模板 ;(function($){          $.fn.extend({         插件名:function(参数){                      }     }); })(jQuery);
   | 
 
1 2 3 4 5 6 7
   | 例子1:开发 例子2:要开发这种插件 $("div").tab({     a:'a',     b:'b' }); 开发这种插件,需要结合昨天的$.extend();即合并多个对象的方法
   | 
 
注意:
1. 插件中的 this 的指向:谁调用了插件,指向的就是谁
 2. 此处的 this 指向的是 jQuery, 而非 js dom 对象
 3.css () 方法会返回调用它的对象,即此处的 this, 所以在原方法的基础上记得添加 return,以保证 jquery 链式操作的延续性
# 插件编写要点
1. 一般建议文件命名为 jquey. 插件名.js,以免和其他 js 库插件混淆    例如命名为 jquery.color.js
2. 所有的对象方法都应当附加到 jQuery.fn.extend ({}); 对象上,而所有的全局函数 (工具方法) 都应当附加到 jQuery.extend ({}) 对象本身上
3. 插件内部 this 指向是当前的局部对象(使用该插件的元素)
4. 可以通过 this.each 来遍历所有元素
5. 所有的方法或插件,必须用分号结尾,避免出问题,为了更稳妥可以在插件头部先加一个分号
6. 插件应该返回的是 jQuery 对象,以保证可链式操作,除非插件是全局方法(需要获取的量,如字符串或数组等  )
7. 避免插件内部使用 $, 如果要使用,请传参数 jQuery 进去
# 无缝滚动的幻灯片插件实例
# 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
   |  <!DOCTYPE html> <html lang="en"> <head> 	<meta charset="UTF-8"> 	<title>——作业2——</title> 	<style type="text/css"> 	*{margin:0;padding: 0;} 	body{ 		height: 1000px; 	} 	ul,li{list-style: none;} 	.content{ 		position: relative; 		width: 790px; 		height: 390px; 		overflow: hidden; 	} 	.content ul{ 		position: absolute; 		top: 0; 		left: -790px; 		/*width: 3950px;*/ 		height: 340px; 	} 	.content ul li{ 		float: left; 		width: 790px; 		height: 340px; 	} 	.content ul li img{ 		width: 100%; 		height: 100%; 	} 	.arrow{ 		position: absolute; 		left: 0; 		bottom: 0; 		width: 790px; 		text-align: center; 		background-color: #fff; 	} 	.arrow a{ 		display: inline-block; 		width: 40px; 		height: 40px; 		line-height: 40px; 		text-decoration: none; 		color: #666; 		border:1px solid #ddd; 		border-radius: 5px; 	} 	.arrow a:hover{ 		background-color: #eee; 	} 	</style> 	<script src="js/jquery-3.3.1.min.js"></script> 	<script src="js/jquery.scroll.js"></script> 	<!--  	2.编写一个可以改变无缝滚动大小,速度的幻灯片插件     其中可变参数为轮播图的宽度和高度,滚动时的速度     调用格式:         $("#box").scroll({             width:790,             height:390,             speed:"normal"         }) 	 --> 	 <script> 		 $(function(){ 			$("#box").scroll({ 				width:790, 				height:390, 				speed:1000 			}) 		 }) 	 </script> </head> <body> 	<div id="box" class="content"> 		<ul class="clearfix"> 			<li><img src="img/adv4.jpg"></li> 			<li><img src="img/adv1.jpg"></li> 			<li><img src="img/adv2.jpg"></li> 			<li><img src="img/adv3.jpg"></li> 			<li><img src="img/adv4.jpg"></li> 			<li><img src="img/adv1.jpg"></li> 		</ul> 		<div class="arrow"> 			<a href="javascript:void(0);"><</a> 			<a href="javascript:void(0);">></a> 		</div> 	</div> </body> </html>
 
 
  | 
 
# js 文件
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
   |  ; (function ($) {     $.fn.extend({         scroll: function (option) {                 option = $.extend({                     width:690,                     height:290,                     speed: 500,                 }, option);                 //这里写JQ代码                 var lbtn = $(".arrow a:first");                 var rbtn = $(".arrow a:last");                 // 胶卷                 var plist = $(".content>ul");                 // 获取多少张                 var len = plist.children().length;//4                 // index表示的就是当前是第几张                 var index = 1;                 // 去根据胶片改变胶卷的长度                 plist.css("width", len * option.width);                 rbtn.on("click", function () {                     index++;                     if (index > len - 1) {                         index = 2;                     }                     plist.stop().animate({ "left": -index * option.width }, function () {                         // 跳到列表的四张图片第一张                         if (index == len - 1) {                             plist.css("left", -option.width);                         }                     });                 });                 lbtn.on("click", function () {                     index--;                     if (index < 0) {                         index = len - 3;                     }                     plist.stop().animate({ "left": -index * option.width }, function () {                         // 跳到列表的四张图片最后一张                         if (index == 0) {                             plist.css("left", -option.width * (len - 2));                         }                     });                 });                 // 用定时器触发实现自动轮播                 var timer = setInterval(function () {                     rbtn.trigger("click");                 }, option.speed)                 // 鼠标移入轮播图的时候轮播静止,移除轮播图的时候轮播继续开始                 $(this).hover(function () {                     clearInterval(timer)                 }, function () {                     timer = setInterval(function () {                         rbtn.trigger("click");                     }, option.speed)                 })         }     }) })(jQuery)
 
 
  |