为了账号安全,请及时绑定邮箱和手机立即绑定

jquery复习之路---常用插件

插件是以jquery的核心代码为基础,编写出符合一定规范的应用程序,并将程序进行打包,调用时,仅需要打包含该打包的js文件即可。
插件的调用:第一步在页面中导入包含插件的js文件(放在jq库文件之后);
自定义插件
封装jq插件分三种:1,封装方法插件;2,封装函数插件; 3,选择器插件(基本不用);

一,封装方法插件,开发插件的首选

封装一个方法插件实际是一个对象插件, 该类插件首先通过jQuery选择器获取对象,并为对象添加方法,然后将方法进行打包,封装成一个插件这种插件极易调,也很方便的使用jQuery中的选择器,因此成为开发插件的首选;
$(selector).方法插件();

二,封装函数插件

封装函数插件是一个类级别的插件,该插件的特点是能直接使用jQuery添加静态方法,并可以将函数置于jQuery命名空间中,如$.trim()和$.ajax()全局性的函数都是以内部插件的形式插入jQuery内核中;

三,插件的封装原则

jquery插件命名必须以jQuery.[插件名].js原则,以区分其他js文件,
1:如果是对象级别的插件,所有的方法必须依附于jquery.fn对象主体;
2:如果是类级别的插件,所有的方法都应依附于jquery对象;

在插件的内部,this代表的是jquery选择器所获取的对象,而非传统意义上的对象的引用;在插件内部的代码中可以使用this.each()遍历所有的元素;无论是对象级别的插件还是类级别的插件结尾处都应以:分号结束,否则在文件压缩时有错;在编写jquery插件代码中,使用jQuery不去使用$;
在编写对象插件时,使用jQuery.fn.extend()方法进行功能扩展;
在编写类级别插件,使用jQuery.extend()方法进行扩展;

四,对象级别插件的开发
1, 功能描述:在列表<ul>元素中,鼠标在表项li元素移动时,可以自定义其获取焦点(focus)时的背景颜色,即设置表项li元素选中时的背景颜色。
2,框架搭建:新建一个js文件,命名为jquery.lifocuscolor.js;并在文件中使用$.fn.extend()完成框架的搭建;

;(function(jQuery){
        jQuery.fn.extend({

          "liFocusColor":function(param_value){

              //各种默认属性或者参数的设置
              var def_color = "#ccc";//默认获取焦点的颜色;
              var lst_color = "#fff";//默认丢失焦点的颜色;
               //如果设置的颜色不为空,则使用设置颜色,否则使用默认颜色
              param_value = (param_value == undefined) ? def_color : param_value;
              //遍历列表项<li>中的全部元素
              jQuery(this).find("li").each(function(){

                  //插件实现的代码
                   jQuery(this).on("mouseover",function(){
                     //获取鼠标焦点事件
                        jQuery(this).css("background-color",param_color)
                           })

                  jQuery(this).on('mouseout',function(){
                      //失去鼠标焦点事件
                         jQuery(this).css("background-color",lst_color) 
                         })

                    })
                  return jQuery(this);//返回jQuery对象,保持链式操作;
              }   
         })
})(jQuery);

插件的调用

<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="jquery-1.12.2.min.js"></script>
<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="jquery.liFocusColor.js"></script>
$("#ul").liFocusColor();//调用自定义的插件
//$("#ul").liFocusColor("red");传递一个颜色参数

五,类级别插件的开发
1,功能描述:新增两个类级别的全局函数,分别用于计算两个数之和与两个数只差,并将结果返回调用的页面中;
2,框架搭建:新建一个js文件,命名为jquery.twoaddresult.js,并在文件中使用$.extend()方法完成框架的搭建;

;(function(jQuery){
       $.extend({
      "twoAddResult":function(){
        "addNum":function(pram_value1,pram_value2){
         //插件实现的代码
            //参数没有就默认为0
            pram_value1 = (pram_value1==undefined)? 0 : pram_value1;
            pram_value2 = (pram_value2==undefined)? 0 : pram_value2;
            var result = parseFloat(pram_value1)+parseFloat(pram_value2);
            return result;
        },
        "subNum":function(pram_value1,pram_value2){
            //参数没有就默认为0
            pram_value1 = (pram_value1==undefined)? 0 : pram_value1;
            pram_value2 = (pram_value2==undefined)? 0 : pram_value2;
            var result = parseFloat(pram_value1)-parseFloat(pram_value2);
            return result;
        }               
                    }
           })
})(jQuery);

插件的调用

<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="jquery-1.12.2.min.js"></script>
<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="jquery.twoAddResult.js"></script>
var addResult = $.addNum($("input[name='text1']").val(), $("input[name='text2']").val() );
var subResult = $.subNum($("input[name='text3']").val(),
$("input[name='text4']").val() );
点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消