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>
时间: 2024-11-03 19:59:15

jQuery基础教程-第8章-004完整代码的相关文章

jQuery基础教程-第8章-002Adding jQuery object methods

一.Object method context 1.We have seen that adding global functions requires extending the jQuery object with new methods. Adding instance methods is similar, but we instead extend the jQuery.fn object(The jQuery.fn object is an alias to jQuery.proto

jQuery基础教程-第8章-003Providing flexible method parameters

一.The options object 1.增加阴影效果 1 (function($) { 2 $.fn.shadow = function() { 3 return this.each(function() { 4 var $originalElement = $(this); 5 for (var i = 0; i < 5; i++) { 6 $originalElement 7 .clone() 8 .css({ 9 position: 'absolute', 10 left: $ori

jQuery基础教程第3章(增加)

3.2 处理简单的事件 3.2.1 简单的样式转换器 .on()方法,可以指定任何DOM事件,并为该事件添加一种行为. .removeClass()方法,可以为指定元素删除类. .addClass()方法,添加类. 3.2.3 利用事件处理程序的上下文 利用$()函数可以将DOM元素作为参数,而this关键字可以作为参数. 3种jQuery特性:1.在通过对.on()的一次调用为每个按钮都绑定相同的单击事件处理程序时,隐式迭代机制再次发挥了作用. 2.行为队列机制使得可以在同一个单击事件上绑定了

jQuery基础教程第3章

window.onload事件与 $(document).ready()事件处理程序的区别 1.触发操作的时间不同.window.onload事件在文档完全下载到浏览器时,才会触发.$(document).ready()事件处理程序在DOM完全就绪并可以使用时调用,所有关联的文件不一定都下载完毕. 2.执行多个脚本.window.onload事件只能执行一个脚本,最后指定的函数会代替之前所指定的函数. $(document).ready()事件处理程序可以执行多个脚本,每次被调用,都会向内部的行

jquery基础教程 - 第一章 JQUERY入门

Jquery基础教程 - 第一章 JQUERY入门 内容提要 1.jquery能做什么 2.jquery为什么如此出色 3.第一个jquery驱动的页面 4.纯javascript与jquery 5.开发工具 6.小结 1.jquery能做什么 取得文档中的元素 -- jQuery为准确的获得需要检查或操纵的文档元素,提供了可靠而富有效率的选择符机制. 找到所有应用了.content class样式的div中所有的P标签             $('div.content').find('p'

Ajax本地跨域问题 Cross origin requests are only supported for HTTP(针对jQuery基础教程第四版第六章)

出现的问题: 解决的步骤: 谷歌浏览器出现的效果: 针对jQuery基础教程(第四版),第六章  成功: 原文地址:https://www.cnblogs.com/qinghui258/p/8432569.html

《jQuery基础教程》读书笔记

最近在看<jQuery基础教程>这本书,做了点读书笔记以备回顾,不定期更新. 第一章第二章比较基础,就此略过了... 第三章 事件 jQuery中$(document).ready()与javascript原生的window.onload()区别: $(document).ready():通过该方法注册的事件处理程序,会在DOM完全就绪并使用时调用.虽然这意味着所有元素对脚本而言都是可访问的,但是,却不意味着所有关联的文件都下载完毕.当HTML下载 完成并解析成DOM树之后,代码就可以开始运行

【jquery基础教程】jquery事件及操作大汇总

在学习Javascript语言中,有一个优秀的Javascript库是大家都会遇到的--jquery,今天小编汇总了jquery事件及操作,现在一起来看看jquery基础教程吧! 事件 bind()        向匹配元素附加一个或更多事件处理器 blur( )        触发.或将函数绑定到指定元素的 blur 事件 change()        触发.或将函数绑定到指定元素的 change 事件 click()        触发.或将函数绑定到指定元素的 click 事件 dblc

jquery基础教程学习笔记一

最近静下心来看书才深刻的体会到:看书真的很重要,只有看书才能让你有心思静下心来思考. 重温<jquery基础教程> 一.事件 主要掌握常见的事件以及理解jquery的事件处理机制. 需要注意的有: 1.事件传播,包括了事件捕获和事件冒泡,以及怎么消除事件传播的影响,以及应用事件传播. 主要的方法有:a.根据事件目标来确定操作,即event.target b.阻止事件传播,即event.stopPapogation c.理解默认事件和jquery事件的区别还有阻止默认事件,即preventDef