首页 > 其他分享 >jQuery中开发插件

jQuery中开发插件

时间:2024-09-10 17:46:54浏览次数:1  
标签:jQuery function 插件 return sum value 开发 array

页面代码   <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     <script src="jquery-3.4.1.js"></script>     <style>         table{             border-collapse: collapse;         }         td,tr,th{             border:1px solid red;         }         .one{             background-color: rebeccapurple;             font-weight: bold;             color:white;         }         .two{             background-color: cadetblue;             color: black;         }     </style> </head> <body>         <script>          //添加全局函数需要以新方法来扩展jQuery对象         (function($){             //要向jQuery的命名控件中添加一个函数,             //只需要将这个新函数指定为jQuery对象的一个属性即可             $.sum=function(array){              var total=0;              $.each(array,function(index,value){                 value=$.trim(value);                 value=parseFloat(value)||0;                 total+=value;              });              return total;             };             $.average=function(array){                 if($.isArray(array)){                     return $.sum(array)/array.length;                 }                 return '';             };             //通过$.extend()就可以给全局jQuery对象添加属性,             //如果有相同的属性,会替换原来属性             $.extend({                 sum:function(array){                     var total=0;                     $.each(array,function(index,value){                         value=$.trim(value);                         value=parseFloat(value)||0;                         total+=value;                     });                     return total;                     },                 average:function(array){                         if($.isArray(array)){                             return $.sum(array)/array.length;                         }                         return '';                     }             });
            //其他jQuery插件也可能定义了相同的函数名,             //为了避免冲突,把属于一个插件的全局函数都封装到一个对象中             $.mathUtils={                 sum:function(array){                     var total=0;                     $.each(array,function(index,value){                         value=$.trim(value);                         value=parseFloat(value)||0;                         total+=value;                     });                     return total;                     },                 average:function(array){                         if($.isArray(array)){                             return $.sum(array)/array.length;                         }                         return '';                     }             }         })(jQuery);

        $(document).ready(function(){             var $inventory=$('#inventory tbody');             var quantities=$inventory.find('td:nth-child(2)').map(function(index,qty){                 console.log(index);                 console.log(qty);                 return $(qty).text();             }).get();             console.log(quantities);             var prices=$inventory.find('td:nth-child(3)').map(function(index,pr){                 return $(pr).text();             }).get();             var sum1=$.sum(quantities);             var sum2=$.sum(prices);             var sum1=$.mathUtils.sum(quantities);             var sum2=$.mathUtils.sum(prices);             $('#sum').find('td:nth-child(2)').text(sum1);             $('#sum').find('td:nth-child(3)').text(sum2);             console.log($.average(quantities));             $('#average').find('td:nth-child(2)').text($.average(quantities));             $('#average').find('td:nth-child(3)').text($.average(prices).toFixed(2));
        });         //添加jQuery对象方法,扩展的却是jQuery.fn对象,即jQuery.prototype         // jQuery.fn.myMethod=function(){         //     alert("Nothing happens");         // }         // $(document).myMethod();         //新方法接受两个类名,每次调用更换应用于每个元素的类,         (function($){             //jQuery的选择符表达式可能会匹配0~n个元素。             $.fn.swapClass=function(class1,class2){                 //object对象数组调用hasClass()只会检查匹配的第一个元素                 //在任何插件内部,this对象引用的都是当前jQuery对象                 if(this.hasClass(class1)){                     this.removeClass(class1).addClass(class2);                 }else if(this.hasClass(class2)){                     this.removeClass(class2).addClass(class1);                 }             };             $.fn.swapClass=function(class1,class2){                 //object对象数组调用hasClass()只会检查匹配的第一个元素                 //在任何插件内部,this引用的都是当前jQuery对象                   //在对象方法体内,this引用的是一个jQuery对象                   //.each()会执行隐式迭代                   //使用连缀方法                 return this.each(function(){                     //在.each方法中,this引用的则是一个DOM元素                     $element=$(this);                     if($element.hasClass(class1)){                         $element.removeClass(class1).addClass(class2);                     }else if($element.hasClass(class2)){                         $element.removeClass(class2).addClass(class1);                     }                 })                             };         })(jQuery);         $(document).ready(function(){               $('table').click(function(){                 //这里的$('tr')为jQuery.fn.init {0: tr.one11, 1: tr#sum.two, 2: tr#average, 3: tr, 4: tr, 5: tr, length: 6, prevObject: j…y.fn.init}                 console.log($('tr'));                 $('tr').swapClass('one','two');               });         });         //提供灵活的方法参数         // (function($){         //        $.fn.shadow=function(){         //         return this.each(function(){         //             var $originalElement=$(this);         //             for(var i=0;i<5;i++){         //                 $originalElement.clone()         //                 .css({         //                     position:'absolute',         //                     left:$originalElement.offset().left+i,         //                     top:$originalElement.offset().top+i,         //                     margin:0,         //                     zIndex:-1,         //                     opacity:0.1         //                 })         //                 .appendTo('body');         //             }         //         })         //        }         // })(jQuery);         // $(document).ready(function(){         //     $('h1').shadow();         // });         (function($){                $.fn.shadow=function(opts){                 //以对象多为参数,可以为用户未指定的参数自动传入默认值                 // var defaults={                 //     copies:5,                 //     opacity:0.1,                 //     //在方法中使用回调函数,需要接受一个函数对象对象作为参数,然后再方法中适当的位置上调用该函数                 //     copyOffset:function(index){                 //         return {x:index,y:index}                 //     }                 // };                 var options=$.extend({},$.fn.shadow.defaults,opts);                 return this.each(function(){                                         var $originalElement=$(this);                     for(var i=0;i<options.copies;i++){                         var offset=options.copyOffset(i);                         console.log(111)                         $originalElement.clone()                                         .css({                                                 position:'absolute',                                                 left:$originalElement.offset().left+offset.x,                                                 top:$originalElement.offset().top+offset.y,                                                 margin:0,                                                 zIndex:-1,                                                 opacity:options.opacity                                             })                                         .appendTo('body');                     }                 });                };                //定制默认值                $.fn.shadow.defaults={                 copies:5,                 opacity:0.1,                 copyOffset:function(index){                     return {x:index,y:index};                 }                }         })(jQuery);                $(document).ready(function(){             //定制默认值,可以让我们减少很多的代码             $.fn.shadow.defaults.copies=10;             $('h1').shadow({                 opacity:0.25,                 copyOffset:function(index){                     return {x:-index,y:-2*index};                 }             })          }                      );     </script>     <h1>Inventory</h1>     <table id="inventory" style="margin: 0 auto; height: 300px; width: 400px; ">         <thead>             <tr             class="one"             >                  <th>Product</th><th>Quantity</th><th>Price</th>             </tr>         </thead>
        <tfoot>             <tr class="two" id="sum">                 <td>Total</td><td></td><td></td>             </tr>             <tr id="average">                 <td>Average</td><td></td><td></td>             </tr>         </tfoot>         <tbody>             <tr>                 <td>                     <a href="spam.html" data-tooltip-text="Nutritious and delicious">Spam</a>                 </td>                 <td>4</td>                 <td>2.50</td>             </tr>             <tr>                 <td>                     <a href="egg.html" data-tooltip-text="Farm fresh or scrambled!">Egg</a>                 </td>                 <td>12</td>                 <td>4.32</td>             </tr>             <tr>                 <td>                     <a href="gourmet-spam.html" data-tooltip-text="Chef Hermann's recipe.">Gourmet Spam</a>                 </td>                 <td>14</td>                 <td>7.98</td>             </tr>         </tbody>     </table> </body> </html>     页面效果

 

     

标签:jQuery,function,插件,return,sum,value,开发,array
From: https://www.cnblogs.com/njhwy/p/18406859

相关文章

  • 【北京迅为】itop-3562开发板快速测试手册第1章 Android13系统功能测试
    iTOP-3562开发板采用瑞芯微RK3562处理器,主频2.0GHz,采用四核A53+MaliG52架构,主频2GHz,内置1TOPSNPU算力,具有多个嵌入式硬件引擎,以优化高端应用的性能。   公众号:迅为电子--------------------------------    第 1章Android13系统功能测试烧写安卓 13 系统镜像,安卓 1......
  • 易百纳ss928开发板移植自训练模型跑通yolov5算法
    ss928平台移植官方yolov5s算法参考文章:https://www.ebaina.com/articles/140000017418,这位大佬也开源了代码,gitee链接:https://gitee.com/apchy_ll/ss928_yolov5s本文在参考上述文章的基础上,将官方yolov5s模型跑通,验证推理图片正确,然后移植自训练的推理模型,在移植过程中遇到了一些......
  • PyQt GUI开发基础-1
    (目录)一、QFileDialog文件对话框控件方法说明getOpenFileName()获取一个打开文件的文件名getOpenFileNames()获取多个打开文件的文件名getSaveFileName()获取保存的文件名getExistingDirectory()获取一个打开的文件夹setAcceptMode()设置接收模式,取......
  • 即时聊天系统源码设计开发​
    一、引言随着移动互联网的快速发展,即时通讯软件已成为人们日常生活中不可或缺的一部分。仿微信QQ聊天系统作为一种模仿主流聊天软件功能的应用,旨在为用户提供高效、便捷的沟通方式。本文将从系统架构、功能模块等方面详细介绍仿微信QQ聊天系统的设计与实现。二、系统架构仿微信QQ聊......
  • 【北京迅为】itop-3562开发板快速测试手册第1章 Android13系统功能测试
              迅为iTOP-3562开发板采用瑞芯微RK3562处理器,主频2.0GHz,采用四核A53+MaliG52架构,主频2GHz,内置1TOPSNPU算力,具有多个嵌入式硬件引擎,以优化高端应用的性能。   公众号:迅为电子--------------------------------    第1章Android13系统......
  • 基于python+flask框架的在线新闻发布系统的设计与开发(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息传播的速度与广度达到了前所未有的高度。新闻作为社会信息的重要载体,其发布与传播的方式直接影响着公众对时......
  • PY32F002A单片机开发板 PY32F002AF15P6开发板 32位MCU,M0+内核
    PY32F002A开发板上搭载的是PY32F002AF15P6单片机,TSSOP20封装,开发板使用TypeC接口供电,可以用来对PY32F002A芯片进行开发调试。PY32F002A开发板推荐使用我们的PY32link来下载仿真,绝大部分的STlink,Jlink,DAPlink也可以下载仿真,需自行测试。开发资料齐全,提供了LL库和HAL库,支持IAR......
  • java上传文件接口开发uploadFile
    controller层:@PostMapping("/uploadFile")publicServiceResultuploadFile(MultipartFilefile,@RequestParamStringcompareType){returnprimaryService.uploadFile(file,compareType);}service层:/***样本文件上传*@p......
  • 平台开发到落地详解:从食堂采购系统源码到可视化供应链管理数据大屏
    随着数字化转型的加速,越来越多的企业和组织开始重视供应链的智能化与可视化管理。在食堂采购领域,供应链管理的复杂性与日俱增,而传统的手工操作往往效率低下、容易出错。因此,开发食堂采购系统并结合可视化数据大屏的解决方案,成为了许多企业提高运营效率、优化采购流程的关键手段。 ......
  • 使用AI工具辅助开发会成为未来的趋势
    AI工具辅助开发会成为未来的趋势引言在软件开发领域,技术的快速演进和复杂性的增加使得开发工作变得更加具有挑战性。传统的开发流程往往需要大量的手动编码和测试,这不仅耗时耗力,而且容易出错。随着人工智能(AI)技术的不断进步,AI工具逐渐成为开发人员的重要助手。本文将探讨AI......