1. 程式人生 > >編寫自己的jQuery擴充套件(外掛)

編寫自己的jQuery擴充套件(外掛)

就我目前所知,編寫jQuery擴充套件(外掛)有三種方式

  • 擴充套件jQuery本身的方法,$.extend
  • 擴充套件jQuery物件的方法,$.fn.extend
  • 擴充套件DataType物件的方法,[DataType].prototype,[DataType]代指String、Number...等資料型別

下面通過舉例介紹具體用法

1.$.extend,以一個頁面彈窗為例:

//$.extend有兩種寫法,注意擴充套件時funcName=function()和funcName:function()的區別

//1. $.funcName = function(){},一般用於定義單個擴充套件(外掛)
$.popUp = function (text, type, second = 2) { var types = { 'info': {'background': "#90c24f"}, 'warning': {'background': "#f99e2b"}, 'error': {'background': "#f06a6a"} } type = type in types ? type : 'info' $p = $('<p></p>').text('{0}:{1}'.format(type, text)).css({ //format方法也是擴充套件(外掛),詳見下文[DataType].prototype
'color': 'white', 'width': '400px', 'z-index': '5', 'height': '50px', 'line-height': '50px', 'text-align': 'center', 'position': 'fixed', 'top': '50px', 'left': '50%', 'margin': '3px', 'margin-left': '-200px', 'border-radius'
: '5px' }).css(types[type]); $('body').append($p); setTimeout(() => $p.fadeOut(), parseInt(second) * 1000) };
 //2. $.extend({funcName1:function(){}, funcName2:function(){}}),一般用於定義多個擴充套件(外掛)
 $.extend({
    popUp: function (text, type, second = 2) {
        ...
    },
});
//呼叫方式:
$.popUp("儲存失敗!", "error", 3)

頁面彈窗

2.$.fn.extend,以一個在游標處插入文字為例:

//和$.extend一樣,$.fn.extend也是同樣的兩種寫法

//1. $.fn.funcName = function(){},一般用於定義單個擴充套件(外掛)
$.fn.insertContent = function (myValue, t) {
    var $t = $(this)[0];
    if (document.selection) { // ie
        this.focus();
        var sel = document.selection.createRange();
        sel.text = myValue;
        this.focus();
        sel.moveStart('character', -l);
        var wee = sel.text.length;
        if (arguments.length == 2) {
            var l = $t.value.length;
            sel.moveEnd("character", wee + t);
            t <= 0 ? sel.moveStart("character", wee - 2 * t - myValue.length) : sel.moveStart("character", wee - t - myValue.length);
            sel.select();
        }
    } else if ($t.selectionStart
        || $t.selectionStart == '0') {
        var startPos = $t.selectionStart;
        var endPos = $t.selectionEnd;
        var scrollTop = $t.scrollTop;
        $t.value = $t.value.substring(0, startPos)
            + myValue
            + $t.value.substring(endPos, $t.value.length);
        this.focus();
        $t.selectionStart = startPos + myValue.length;
        $t.selectionEnd = startPos + myValue.length;
        $t.scrollTop = scrollTop;
        if (arguments.length == 2) {
            $t.setSelectionRange(startPos - t,
                $t.selectionEnd + t);
            this.focus();
        }
    } else {
        this.value += myValue;
        this.focus();
    }
}
//2. $.fn.extend({funcName1:function(){}, funcName2:function(){}}),一般用於定義多個擴充套件(外掛)
$.fn.extend({
    insertContent: function (myValue, t) {
        ...
    },
})
//呼叫方式
$("#target").insertContent("text");

游標文字插入

3.[DataType].prototype,以一個文字格式化為例:

//[DataType].prototype只有一種寫法
String.prototype.format = function (args) {
    var result = this;
    if (arguments.length > 0) {
        if (arguments.length == 1 && typeof (args) == "object") {
            for (var key in args) {
                if (args[key] != undefined) {
                    // noinspection Annotator
                    var reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        }
        else {
            for (var i = 0; i < arguments.length; i++) {
                if (arguments[i] != undefined) {
                    // noinspection Annotator
                    var reg = new RegExp("({[" + i + "]})", "g");
                    result = result.replace(reg, arguments[i]);
                }
            }
        }
    }
    return result;
}
//呼叫方式
var text = '{"{0}": {1}, "{2}": "{3}"}'.format('id',1,'name','nandy')

這裡寫圖片描述

相關推薦

編寫自己jQuery擴充套件外掛

就我目前所知,編寫jQuery擴充套件(外掛)有三種方式 擴充套件jQuery本身的方法,$.extend 擴充套件jQuery物件的方法,$.fn.extend 擴充套件DataType物件的方法,[DataType].prototype,[DataTyp

Unity3D編輯器擴充套件(——常用特性Attribute以及Selection類 Unity3D編輯器擴充套件(——定義自己的選單按鈕 Unity3D編輯器擴充套件(——定義自己的視窗 Unity3D編輯器擴充套件(——使用GUI繪製視窗 Unity3D編輯器擴充套件(

前面寫了四篇關於編輯器的: Unity3D編輯器擴充套件(一)——定義自己的選單按鈕 Unity3D編輯器擴充套件(二)——定義自己的視窗 Unity3D編輯器擴充套件(三)——使用GUI繪製視窗 Unity3D編輯器擴充套件(四)——擴充套件自己的元件 今天我們來講解在編輯器擴充套件中我們常用的特

JS+JQuery實現前端省、市、區三級聯動外掛

大家在做web開發的時候,肯定會在前端程式碼裡面遇到選擇省市區(縣)的功能,比如建立使用者、編輯使用者時,使用者選擇所在地等。好了多餘的話不多說了,我們進入正題吧! 首先,在前端頁面裡面編寫HTML程式碼:<div id="city"> <select

QML外掛擴充套件

準備分兩節來介紹QML擴充套件外掛,分別為 (一)基於QML檔案的擴充套件方式 (二)基於C++的外掛擴充套件 這篇先介紹基於QML的外掛擴充套件。 先介紹幾個基本概念: qmldir: 用於組織自定義的QML外掛,qmldir的具體寫法可參考 .qmlty

編寫自己的Shader著色器

一、Shader 程式的基本結構##Shader程式的基本結構首先是一些屬性定義,用來指定這段程式碼將有哪些輸入。接下來是一個或者多個的子著色器,在實際執行中,哪一個子著色器被使用是由執行的平臺所決定的。子著色器是程式碼的主體,每一個子著色器中包含一個或者多個的Pass。在計算著色時,平臺先選擇最優先可以使用

分頁不重新整理,使用到jquery.pagination.js外掛

引用到外掛(可以從網上下載): jquery.pagination.js pagination.css 在需要的分頁條的地方放入一個div <div id="paginate"></div> 在js裡書寫配置(pagination這裡面還

axis2開發webservice之編寫Axis2模塊Module

mes idt com 2.x web-inf turn 分享 元素 rate axis2中的模塊化開發。能夠讓開發者自由的加入自己所需的模塊。提高開發效率,減少開發的難度。 Axis2能夠通過模塊(Module)進行擴展。Axis2模塊至少須要有兩個類,這兩

JQuery系列4 - AJAX方法

type 一般來說 其他 don light spa none rouge 狀態信息 jQuery對象上面還定義了Ajax方法($.ajax()),用來處理Ajax操作。調用該方法後,瀏覽器就會向服務器發出一個HTTP請求。 $.ajax方法 $.ajax()的用法主要

JQuery系列7 - JQuery最佳實踐

get 參考 cti query jquer html .html bsp best 參考 【1】阮一峰 http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.htmlJQuery系

jQuery獲取URL地址欄參數

location clas -1 cat 地址 func 地址欄 oca url地址 //獲取地址欄參數 //url為空時為調用當前url地址 //調用方法為 var params = getPatams(); function getPa

Jquery基礎

lac submit rop mov dto 節點 mit focus find 簡介: jQuery是一個快速的,簡潔的javaScript庫,使用戶能更方便地處理HTMLdocuments、events、實現動畫效果,並且方便地為網站提供AJAX交互。 Jquery

Jquery基礎

4.2 aaa round next apu eat addclass 3.1 什麽 一 jQuery是什麽? <1> jQuery由美國人John Resig創建,至今已吸引了來自世界各地的眾多 javascript高手加入其team。 &

線性遞推式外掛

ons return main clear rep for near n-1 cond 傳入前幾項,輸出低n項的值 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath&g

Jquery教程

tle eap java () 成功 dom charset span asc 一、何為Jquery JQuery是一套跨瀏覽器的JavaScript庫,簡化HTML與JavaScript之間的操作。由John Resig在2006年1月的BarCamp NYC上發布第一

編寫python web框架:簡介

== web 方法 nvi ever pytho 必須 ext sim 編寫一個最簡單的應用: def app(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘tex

mysql編寫存儲過程2

con ·· lan gpo 存儲 info 技術分享 body ima 書接上回。 實例8:if-then -else語句 實例9:case語句: 實例10:循環語句,while ···· end while: 實例11:循環語句,repeat···· end

Jquery動畫animate的使用及擴展說明

思路 毫秒 eat sha typeof 來看 包含 const show JQuery動畫可以實現非常多的效果,並且支持擴展動畫效果,其中 http://easings.net/zh-cn# 在基於JQuery上作了非常有用的動畫擴展,尤其在一些曲線或拋物線上沒有這些公式

Asp.net MVC 搭建屬於自己的框架

C4D pagedlist del tran 6.0 ext 才有 應該 frame 網址:https://www.cnblogs.com/sggx/p/4555255.html 為什麽要自己搭框架?   大家夥別急,讓我慢慢地告訴你!大家有沒有這種感覺,從一家跳槽到另一家

使用NUget發布自己的dll

ica value ML physical esp image 包管理 service 混淆 https://www.cnblogs.com/bile/p/5959707.html 一:Nuget控制臺有幾個常用命令   Get-Package 獲取當前項目已經安裝

前端學習(二十jquery屬性筆記

after box jquery屬性 remove ren pen nbsp mov 操作 jq裏面操作屬性的方法: 設置屬性: 設置一個: $(this).attr(‘src‘,‘img/pic2.jpg‘);