• jQuery基础教程-第8章-004完整代码


    1.

      1 /******************************************************************************
      2   Our plugin code comes first in this document. Normally, plugins would
      3   appear in separate files named jquery.plugin-name.js, but for our examples
      4   it's convenient to place this plugin code in the same JavaScript file as
      5   the code that calls it.
      6 ******************************************************************************/
      7 
      8 /******************************************************************************
      9   $.sum()
     10   Return the total of the numeric values in an array/object.
     11 ******************************************************************************/
     12 (function($) {
     13   $.mathUtils = {
     14     sum: function(array) {
     15       var total = 0;
     16 
     17       $.each(array, function(index, value) {
     18         value = $.trim(value);
     19         value = parseFloat(value) || 0;
     20 
     21         total += value;
     22       });
     23       return total;
     24     },
     25     average: function(array) {
     26       if ($.isArray(array)) {
     27         return $.mathUtils.sum(array) / array.length;
     28       }
     29       return '';
     30     }
     31   };
     32 })(jQuery);
     33 
     34 
     35 /******************************************************************************
     36   .swapClass()
     37   Exchange one class for another on the selected elements.
     38 ******************************************************************************/
     39 (function($) {
     40   $.fn.swapClass = function(class1, class2) {
     41     return this.each(function() {
     42       var $element = $(this);
     43       if ($element.hasClass(class1)) {
     44         $element.removeClass(class1).addClass(class2);
     45       }
     46       else if ($element.hasClass(class2)) {
     47         $element.removeClass(class2).addClass(class1);
     48       }
     49     });
     50   };
     51 })(jQuery);
     52 
     53 
     54 /******************************************************************************
     55   .shadow()
     56   Create a shadow effect on any element by brute-force copying.
     57 ******************************************************************************/
     58 (function($) {
     59   $.fn.shadow = function(opts) {
     60     var options = $.extend({}, $.fn.shadow.defaults, opts);
     61 
     62     return this.each(function() {
     63       var $originalElement = $(this);
     64       for (var i = 0; i < options.copies; i++) {
     65         var offset = options.copyOffset(i);
     66         $originalElement
     67           .clone()
     68           .css({
     69             position: 'absolute',
     70             left: $originalElement.offset().left + offset.x,
     71             top: $originalElement.offset().top + offset.y,
     72             margin: 0,
     73             zIndex: -1,
     74             opacity: options.opacity
     75           })
     76           .appendTo('body');
     77       }
     78     });
     79   };
     80 
     81   $.fn.shadow.defaults = {
     82     copies: 5,
     83     opacity: 0.1,
     84     copyOffset: function(index) {
     85       return {x: index, y: index};
     86     }
     87   };
     88 })(jQuery);
     89 
     90 
     91 /******************************************************************************
     92   .tooltip()
     93   A simple jQuery UI tooltip widget.
     94 ******************************************************************************/
     95 (function($) {
     96   $.widget('ljq.tooltip', {
     97     options: {
     98       offsetX: 10,
     99       offsetY: 10,
    100       content: function() {
    101         return $(this).data('tooltip-text');
    102       }
    103     },
    104 
    105     _create: function() {
    106       this._tooltipDiv = $('<div></div>')
    107         .addClass('ljq-tooltip-text ui-widget ui-state-highlight ui-corner-all')
    108         .hide().appendTo('body');
    109       this.element
    110         .addClass('ljq-tooltip-trigger')
    111         .on('mouseenter.ljq-tooltip', $.proxy(this._open, this))
    112         .on('mouseleave.ljq-tooltip', $.proxy(this._close, this));
    113     },
    114 
    115     destroy: function() {
    116       this._tooltipDiv.remove();
    117       this.element
    118         .removeClass('ljq-tooltip-trigger')
    119         .off('.ljq-tooltip');
    120       $.Widget.prototype.destroy.apply(this, arguments);
    121     },
    122 
    123     open: function() {
    124       this._open();
    125     },
    126 
    127     close: function() {
    128       this._close();
    129     },
    130 
    131     _open: function() {
    132       if (!this.options.disabled) {
    133         var elementOffset = this.element.offset();
    134         this._tooltipDiv.css({
    135           position: 'absolute',
    136           left: elementOffset.left + this.options.offsetX,
    137           top: elementOffset.top + this.element.height() + this.options.offsetY
    138         }).text(this.options.content.call(this.element[0]));
    139         this._tooltipDiv.show();
    140         this._trigger('open');
    141       }
    142     },
    143 
    144     _close: function() {
    145       this._tooltipDiv.hide();
    146       this._trigger('close');
    147     }
    148   });
    149 })(jQuery);
    150 
    151 
    152 /******************************************************************************
    153   End plugin code; begin custom script code.
    154 ******************************************************************************/
    155 $(document).ready(function() {
    156   var $inventory = $('#inventory tbody');
    157   var quantities = $inventory.find('td:nth-child(2)')
    158   .map(function(index, qty) {
    159     return $(qty).text();
    160   }).get();
    161 
    162   var prices = $inventory.find('td:nth-child(3)')
    163   .map(function(index, qty) {
    164     return $(qty).text();
    165   }).get();
    166 
    167   var sum = $.mathUtils.sum(quantities);
    168   var average = $.mathUtils.average(prices);
    169   $('#sum').find('td:nth-child(2)').text(sum);
    170   $('#average').find('td:nth-child(3)').text(average.toFixed(2));
    171 
    172   $('table').click(function() {
    173     $('tr').swapClass('one', 'two');
    174   });
    175 
    176   $.fn.shadow.defaults.copies = 10;
    177   $('h1').shadow({
    178     copyOffset: function(index) {
    179       return {x: -index, y: index};
    180     }
    181   });
    182 
    183   $('a').tooltip();
    184 });

    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     
    15   </head>
    16   <body>
    17     <div id="container">
    18       <h1>Inventory</h1>
    19       <table id="inventory">
    20         <thead>
    21           <tr class="one">
    22             <th>Product</th>
    23             <th>Quantity</th>
    24             <th>Price</th>
    25           </tr>
    26         </thead>
    27         <tfoot>
    28           <tr class="two" id="sum">
    29             <td>Total</td>
    30             <td></td>
    31             <td></td>
    32           </tr>
    33           <tr id="average">
    34             <td>Average</td>
    35             <td></td>
    36             <td></td>
    37           </tr>
    38         </tfoot>
    39         <tbody>
    40           <tr>
    41             <td><a href="spam.html" data-tooltip-text="Nutritious and delicious!">Spam</a></td>
    42             <td>4</td>
    43             <td>2.50</td>
    44           </tr>
    45           <tr>
    46             <td><a href="egg.html" data-tooltip-text="Farm fresh or scrambled!">Egg</a></td>
    47             <td>12</td>
    48             <td>4.32</td>
    49           </tr>
    50           <tr>
    51             <td><a href="gourmet-spam.html" data-tooltip-text="Chef Hermann's recipe.">Gourmet Spam</a></td>
    52             <td>14</td>
    53             <td>7.89</td>
    54           </tr>
    55         </tbody>
    56       </table>
    57     </div>
    58   </body>
    59 </html>
  • 相关阅读:
    python 删除文件夹中(含子文件夹中)特定类型文件;;;暂定删除所有非txt的文件
    python 统计文件夹内有多少文件夹 和 文件夹内有多少子文件
    截取视频 opencv python
    计算图像照片直方图 python opencv
    pythonopencv 视频裁剪成帧。全帧、自定义间隔帧、只取某一帧
    对比度计算contrast
    帧间差分、对比度--评价镜头的防抖性。EIS
    照片 图像转视频(MP4,avi)python,opencv
    python opencv图像不同帧的相似度以及帧间差分计算
    录制的视频,使用python opencv去截取帧数(只取某一帧)同时可裁剪图像尺寸
  • 原文地址:https://www.cnblogs.com/shamgod/p/5499974.html
Copyright © 2020-2023  润新知