編寫自己的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‘);