jQuery外掛開發學習
阿新 • • 發佈:2019-02-12
1、jQuery外掛編寫準備
要使用jQuery進行自定義外掛的編寫,首先應該的是瞭解jQuery的外掛機制或者說是通過jQuery庫本身提供的哪些函式進行外掛的編寫,主要涉及的兩個函式是:jQuery.extend(object)和jQuery.fn.extend(object),其具體作用可以通過查詢jQuery的API文件 得到,這裡也把API簡單轉過來:
A、 jQuery.extend(object)
擴充套件jQuery物件本身,用來在jQuery名稱空間上增加新函式。 例如: Js程式碼- jQuery.extend({
-
min: function
- max: function(a, b) { return a > b ? a : b; }
- });
- jQuery.min(2,3); //=> 2
- $.max(4,5); //=>5
2、簡單的jQuery外掛的編寫
A、jQuery外掛的基本格式
- /*
- * digitClocker
- * @author: zhoucl
- * @date : 08/11/2011
- */
- (function($, undefined){
- ...
- //code here
- ...
- })(jQuery);
B、將原來直接javascript編寫的一個電子時鐘改寫為jQuery外掛使用,程式碼如下:
Java程式碼- /*
- * digitClocker
- * @author: zhoucl
- * @date : 03/11/2011
- */
-
(function($, undefined){
- $.extend($.fn, {
- digitclocker: function(settings){
- var params = $.extend({
- baseURL: '../js/jquery/custom_plugins/',
- imgPath: 'digits/'
- }, settings);
- for(var i = 1; i < 9; i++) {
- if(i % 3 == 0) $(this).append("<img alt='0' src='" + params.baseURL + params.imgPath + "colon.gif'>");
- else $(this).append("<img class='clockImage' alt='0' src='" + params.baseURL + params.imgPath + "0.gif'>");
- }
- new DigitClock(params, $(this));
- }
- });
- setInterval(function(){
- DigitClock.reDraw();
- }, 1000);
- DigitClock = function(params, container) {
- this.params = params;
- this.container = container;
- DigitClock.clocks.push(this);
- DigitClock.reDraw();
- }
- DigitClock.clocks=[];
- DigitClock.reDraw = function() {
- var d=new Date();
- for (var i = 0; i < this.clocks.length; i++) {
- this.clocks[i].setTime(d.getHours(),d.getMinutes(),d.getSeconds());
- }
- }
- DigitClock.preZero = function(n, pos) {
- return ("0"._digitClockRepeat(pos-1)+n).slice(-pos);
- }
- DigitClock.prototype = {
- setTime : function(h, i ,s) {
- this.setImage(
- DigitClock.preZero(h,2) + DigitClock.preZero(i,2) + DigitClock.preZero(s,2)
- )
- },
- setImage: function(s) {
- s = s.split("");
- var baseURL = this.params.baseURL;
- var imgPath = this.params.imgPath;
- var i = 0;
- $(".clockImage", this.container).each(function(){
- $(this).attr("src", baseURL + imgPath + s[i++] +".gif");
- });
- }
- }
- String.prototype._digitClockRepeat = function(n) {
- return new Array(n+1).join(this);
- }
- })(jQuery);
引用上述js檔案,在頁面中得呼叫程式碼如下:
Html程式碼- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>simple_test.html</title>
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="this is my page">
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <!--呼叫jQuery的庫:jquery-1.5.2.js-->
- <script src="../js/jquery/jquery-1.5.2.js" type="text/javascript"></script>
- <script src="../js/jquery/custom_plugins/jquery.clzps.digitclock.js" type="text/javascript"></script>
- <script>
- $(function(){
- $('#digitClock').digitclocker({
- baseURL: '../js/jquery/custom_plugins/',
- imgPath: 'digits/'
- });
- });
- </script>
- </head>
- <body>
- <div id="digitClock"></div>
- </body>
- </html>
效果圖如下: