>웹 프론트엔드 >JS 튜토리얼 >jQuery 메소드에 콜백 함수 추가 플러그인 application_jquery

jQuery 메소드에 콜백 함수 추가 플러그인 application_jquery

WBOY
WBOY원래의
2016-05-16 17:43:071205검색

플러그인 소스 코드 jquery.callback.js
플러그인 오픈 소스 주소: https://gist.github.com/4580276

코드 복사 코드는 다음과 같습니다.

/**
* @fileOverview 이 플러그인은 jQuery 메서드에 콜백 함수를 추가하는 데 사용됩니다. 원래 메서드의 동작에 영향을 주지 않고 클래스 메서드나 인스턴스 메서드에 사용자 정의 콜백 함수를 추가할 수 있습니다.
* @dependent jQuery1.7
* @author huhai
* @since 2013-01-21
*/
(function($){
$._callbacks = {};
$._callbacks_ = {};
$._alias = {};
$._alias_ = {};
$.extend({
/**
* @description 메소드에 콜백 함수 추가
* @param funcName: string 콜백을 추가해야 하는 함수 이름
* @param callback: 함수 콜백 함수(제거해야 하는 경우) 익명 메서드를 사용하지 마세요)
* @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(콜백);
if(!$._alias[funcName]){
$._alias[funcName] = $[funcName];//등록 원래 클래스 메서드

$[funcName] = function(){//Proxy 클래스 메서드
var result = $._alias[funcName].apply(this, 인수); _callbacks[funcName].fireWith(this, 인수);
결과 반환
}
}
}else{
if($.fn[funcName] && $ .isFunction($.fn[funcName] )){
if(!this._callbacks_[funcName]){
this._callbacks_[funcName] = $.Callbacks()
}
this; ._callbacks_[funcName].add(callback );
if(!$._alias_[funcName]){
$._alias_[funcName] = $.fn[funcName];//원래 인스턴스 메소드 등록
$.fn[funcName] = function(){//Proxy 인스턴스 메소드;
var result = $._alias_[funcName].apply(this, 인수)
$._callbacks_[funcName].fireWith (이것, 인수);
결과
};
}
}
}
/**
* @description 메소드에 추가된 콜백 함수 제거
* @param funcName: string 추가된 콜백의 함수 이름
* @param callback: 함수 콜백 함수
* @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(콜백)
}
}
}else{
if($.fn[funcName] && $.isFunction($.fn[funcName])){
if(this._callbacks_[funcName]){
this._callbacks_.remove(콜백);
}
}
}
}
}
})
})(jQuery);
사용 예:
HTML



코드 복사


코드는 다음과 같습니다.











js
复制代码代码如下:

jQuery( function($){
$.addCallback("html", function(){
if(this.length == 1 && argument.length > 0 && "string" === typeof(arguments[0 ])){
if(/]*>.*
/i.test(arguments[0].replace(/n/g))){
console.log("斑马表");
$("table:not(table.notZebra): tbody tr:odd", this).addClass("zebra");
}
}
})
$.addCallback("html", function(){console.log("回调2");});
$.addCallback("html", function(){console .log("回调 3");});
$("#queryResults").html(
Mustache.to_html($("#dataTable").html())
); 🎜>});


运行结果
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.