首頁 >web前端 >js教程 >為jQuery方法加入回呼函數一個外掛程式的應用程式_jquery

為jQuery方法加入回呼函數一個外掛程式的應用程式_jquery

WBOY
WBOY原創
2016-05-16 17:43:071206瀏覽

插件源碼jquery.callback.js
插件開源地址: https://gist.github.com/4580276

複製代碼 程式碼如下:

/**
* @fileOverview 本外掛程式用於為jQuery方法新增回呼函數,可在類別方法或實例方法中新增任何自訂的回呼函數而不影響原方法的行為
* @dependency jQuery1.7
* @author huhai
* @since 2013-01-21
*/
(function($){
$._callbacks = {};
$._callbacks_ = {};
$._alias = {};
$._alias_ = {};
$.extend({
/**
* @decription 給方法加入回呼函數
* @param funcName : string 需要加入回呼的函數名稱
* @param callback : function 回呼函數(如需移除,不要使用匿名方法)
* @param static : boolean 是否為類別方法,預設為false
*/
addCallback : function(funcName, callback, static){
if("string" === typeof(funcName) && $.isFunction(callback)){
if(static === true){
if($[funcName] && $ .isFunction($[funcName])){
if(!this._callbacks[funcName]){
this._callbacks[funcName] = $.Callbacks();
}
this._callbacks [funcName].add(callback);
if(!$._alias[funcName]){
$._alias[funcName] = $[funcName];//寄存原來的類別方法

$[funcName] = function(){//代理類別方法;
var result = $._alias[funcName].apply(this, arguments);
$._callbacks[funcName].fireWith(this, arguments);
return result;
};
}
}
}else{
if($.fn[funcName] && $.isFunction($.fn[funcName] )){
if(!this._callbacks_[funcName]){
this._callbacks_[funcName] = $.Callbacks();
}
this._callbacks_[funcName].add(callback).add(callback). );
if(!$._alias_[funcName]){
$._alias_[funcName] = $.fn[funcName];//寄存原來的實例方法
$.fn[funcName] = function(){//代理實例方法;
var result = $._alias_[funcName].apply(this, arguments);
$._callbacks_[funcName].fireWith(this, arguments);
return result;
};
}
}
}
}
},
/**
* @decription 移除給方法新增的回呼函數
* @param funcName : string 已新增回調的函式名稱
* @param callback : function 回呼函數
* @param static : boolean 是否是類別方法,預設為false
*/
removeCallback: function(**funcName, callback , static){
if("string" === typeof(funcName) && $.isFunction(callback)){
if(static === true){
if($[funcName] && $.isFunction($[funcName])){
if(this._callbacks[funcName]){
this._callbacks.remove(callback);
}
}
}else{
if($.fn[funcName] && $.isFunction($.fn[funcName])){
if(this._callbacks_[funcName]){
this._callbacks_.remove(callback);
}
}
}
}
}
});
})(jQuery);

用法實例:
HTML
複製程式碼 程式碼如下:









陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn