jQuery-devPlugin(1)

<!DOCTYPE html>
<!--
    	声明:练习素材来自于jquery基础教程
    -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Developing Plugins</title>
    <link rel="stylesheet" href="../../css/08.css" type="text/css" />
    <link rel="stylesheet" href="../../ui-themes/smoothness/jquery-ui-1.10.0.custom.min.css" type="text/css" />
    <script src="../../lib/jquery.js"></script>
    <script src="../../lib/jquery-ui-1.10.0.custom.min.js"></script>
    <script>
    	/*1、添加新的全局函数*/
    	//要向jQuery的命名空间中添加一个函数,只需将这个新函数指定为jQuery对象的一个属性
    	(function($){
    		//求和函数
    		$.sum = function(array){
    			var sum = 0;
    			$.each(array, function(index,value) {
    				var v = parseFloat($.trim(value))||0;
    				sum += v;
    			});
    			return sum;
    		};
    		//求平均数函数
    		$.average = function(array){
    			if($.isArray(array)){
    				return parseFloat($.sum(array)/array.length).toFixed(2);
    			}
    			return '';
    		}
    	})(jQuery);
    	
    	//测试开发的sum插件
    	$(document).ready(function(){
//  		alert($.sum([1,2,3,4,5]));
				var qulities = $('#inventory tbody')
				.find('td:nth-child(2)')
				.map(function(index,o){//这里是返回jquery对象
					return $(o).text();
				}).get();
				
				var price = $('#inventory tbody')
				.find('td:nth-child(3)')
				.map(function(index,o){
					return $(o).text();
				}).get();
				//求和
				$('#sum')
				.find('td:nth-child(2)')
				.text($.sum(qulities));
				
				$('#sum').find('td:nth-child(3)')
				.text($.sum(price))
				
				//求平均值
				$('#average')
				.find('td:nth-child(2)')
				.text($.average(qulities));
				
				$('#average').find('td:nth-child(3)')
				.text($.average(price))
    	});
    	
    	
    	/*2、扩展全局jQuery对象*/
    	//事实上,利用$.extend()函数,还可以通过另外一种语法来定义全局函数
    	//这样调用$.extend()就可以给全局jQuery对象添加属性(如果原来有相同的属性,就会替换原来的属性)
    	(function($){
    		$.extend({
    			sum:function(array){
    				var sum = 0;
    				$.each(array, function(index,o) {
    					var tmp = parseFloat($.trim(o))||0;
    					sum += tmp;
    				});
    				return sum;
    			},
    			average:function(array){
    				if($.isArray(array)){
    					return parseFloat($.sum(array)/array.length).toFixed(2);
    				}
    				return '';
    			}
    		});
    	})(jQuery);
    	
    	/*使用命名空间隔离函数*/
    	
    	//我们的插件在jQuery命名空间中创建了两个独立的全局函数。但这样写有可能污染命名空间。
    	//换句话说,其他jQuery插件也可能定义相同的函数名。为了避免冲突,最好的办法是把属于
    	//一个插件的全局函数都封装到一个对象中
    	(function($){
    		$.mathUtils = {
    			sum:function(array){
    				var sum = 0;
    				$.each(array, function(index,o) {
    					var tmp = parseFloat($.trim(o))||0;
    					sum += tmp;
    				});
    				return sum;
    			},
    			average:function(array){
    				if($.isArray(array)){
    					return parseFloat($.sum(array)/array.length).toFixed(2);
    				}
    				return '';
    			}
    		};
    	})(jQuery);
    	
    	//测试
    	console.log($.mathUtils.sum([1,2,3]));
    	console.log($.mathUtils.average([1,2,3]));
    	
    </script>
  </head>
  <body>
    <div id="container">
      <h1>Inventory</h1>
      <table id="inventory">
        <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.89</td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>

 

转载于:https://my.oschina.net/Craft/blog/1588571

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你提供的`package.json`文件,可以看出你的项目依赖关系如下: 开发依赖项: - `@types/jest`: 用于为Jest测试框架提供TypeScript类型定义。 - `@types/jquery`: 用于为jQuery库提供TypeScript类型定义。 - `@types/source-map`: 用于为source-map库提供TypeScript类型定义。 - `@typescript-eslint/eslint-plugin`: 用于在ESLint中使用TypeScript规则的插件。 - `@typescript-eslint/parser`: 用于解析TypeScript代码并生成抽象语法树(AST),供ESLint使用。 - `awesome-typescript-loader`: 用于Webpack中加载TypeScript文件。 - `clean-webpack-plugin`: 用于在每次构建之前清理输出目录。 - `eslint`: 用于进行代码规范检查。 - `fork-ts-checker-webpack-plugin`: 用于在Webpack构建过程中进行TypeScript类型检查。 - `html-webpack-plugin`: 用于生成HTML文件并自动引入打包后的资源。 - `jest`: 用于进行单元测试。 - `ts-jest`: 用于在Jest中解析和运行TypeScript代码。 - `ts-loader`: 用于Webpack中加载TypeScript文件。 - `typescript`: TypeScript编译器。 - `webpack`: 用于打包项目资源。 - `webpack-cli`: 用于在命令行中运行Webpack命令。 - `webpack-dev-server`: 用于在开发过程中提供一个开发服务器,支持热更新和自动刷新。 - `webpack-merge`: 用于合并多个Webpack配置文件。 生产依赖项: - `jquery`: jQuery库。 - `moment`: 日期时间操作库。 根据你提供的信息,你的`npm start`命令应该是可以正常工作的。但是,记得在运行之前,先根据之前的回答中的建议,升级Node.js版本到npm支持的版本。 如果你遇到了其他问题,请提供错误信息或详细描述你的操作步骤,以便更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值