jQuery基础教程-第8章-001Adding new global functions
一、
1.To add a function to the jQuery namespace, we can just assign the new function as
a property of the jQuery object:
1 (function($) { 2 $.sum = function(array) { 3 // Code goes here 4 }; 5 })(jQuery);
Now, in any code that uses this plugin, we can write:
$.sum();
2.添加函数的例子
1 <!DOCTYPE html> 2 3 <html lang="en"> 4 <head> 5 <meta charset="utf-8"> 6 <title>Developing Plugins</title> 7 8 <link rel="stylesheet" href="08.css" type="text/css" /> 9 <link rel="stylesheet" href="ui-themes/smoothness/jquery-ui-1.10.0.custom.css" type="text/css" /> 10 11 <script src="jquery.js"></script> 12 <script src="jquery-ui-1.10.0.custom.min.js"></script> 13 <script src="08.js"></script> 14 <script type="text/javascript"> 15 (function($) { 16 $.sum = function(array) { 17 var total = 0; 18 $.each(array, function(index, value) { 19 value = $.trim(value); 20 value = parseFloat(value) || 0; 21 total += value; 22 }); 23 return total; 24 }; 25 26 $.average = function(array) { 27 if ($.isArray(array)) { 28 return $.sum(array) / array.length; 29 } 30 return ''; 31 }; 32 })(jQuery); 33 34 $(document).ready(function() { 35 var $inventory = $('#inventory tbody'); 36 var quantities = $inventory.find('td:nth-child(2)') 37 .map(function(index, qty) { 38 return $(qty).text(); 39 }).get(); 40 var sum = $.sum(quantities); 41 $('#sum').find('td:nth-child(2)').text(sum); 42 43 var prices = $inventory.find('td:nth-child(3)') 44 .map(function(index, qty) { 45 return $(qty).text(); 46 }).get(); 47 var average = $.average(prices); 48 $('#average').find('td:nth-child(3)').text(average.toFixed(2)); 49 }); 50 </script> 51 </head> 52 <body> 53 <div id="container"> 54 <h1>Inventory</h1> 55 <table id="inventory"> 56 <thead> 57 <tr class="one"> 58 <th>Product</th> 59 <th>Quantity</th> 60 <th>Price</th> 61 </tr> 62 </thead> 63 <tfoot> 64 <tr class="two" id="sum"> 65 <td>Total</td> 66 <td></td> 67 <td></td> 68 </tr> 69 <tr id="average"> 70 <td>Average</td> 71 <td></td> 72 <td></td> 73 </tr> 74 </tfoot> 75 <tbody> 76 <tr> 77 <td><a href="spam.html" data-tooltip-text="Nutritious and delicious!">Spam</a></td> 78 <td>4</td> 79 <td>2.50</td> 80 </tr> 81 <tr> 82 <td><a href="egg.html" data-tooltip-text="Farm fresh or scrambled!">Egg</a></td> 83 <td>12</td> 84 <td>4.32</td> 85 </tr> 86 <tr> 87 <td><a href="gourmet-spam.html" data-tooltip-text="Chef Hermann's recipe.">Gourmet Spam</a></td> 88 <td>14</td> 89 <td>7.89</td> 90 </tr> 91 </tbody> 92 </table> 93 </div> 94 </body> 95 </html>
3.Extending the global jQuery object
We can also employ an alternate syntax in defining our functions using the $.extend() function:
1 (function($) { 2 $.extend({ 3 sum: function(array) { 4 var total = 0; 5 $.each(array, function(index, value) { 6 value = $.trim(value); 7 value = parseFloat(value) || 0; 8 total += value; 9 }); 10 return total; 11 }, 12 average: function(array) { 13 if ($.isArray(array)) { 14 return $.sum(array) / array.length; 15 } 16 return ''; 17 } 18 }); 19 })(jQuery);
4.Isolating functions within namespaces
1 (function($) { 2 $.mathUtils = { 3 sum: function(array) { 4 var total = 0; 5 $.each(array, function(index, value) { 6 value = $.trim(value); 7 value = parseFloat(value) || 0; 8 total += value; 9 }); 10 return total; 11 }, 12 average: function(array) { 13 if ($.isArray(array)) { 14 return $.mathUtils.sum(array) / array.length; 15 } 16 return ''; 17 } 18 }; 19 })(jQuery); 20 21 $.mathUtils.sum(sum); 22 $.mathUtils.average(average);
You can do anything you set your mind to, man!