0
我對Javascript中的「call」函數有所懷疑。我有這樣的jQuery插件:對jQuery插件的回調函數
(function($) {
var methods = {
method1 : function(settings, callback) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
method2 : function(settings, callback) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
method3 : function(settings, callback) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
};
$.fn.jPlugin = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
else if (typeof method === 'object') {
$.error('Expected two (2) parameters: parameter 1 must be the method name to call. Parameter 2 must be an object containing the settings for this method.');
}
else {
$.error('Method ' + method + ' does not exist');
}
};
而且我有點困惑該行的jQuery插件文檔中:
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
插件按預期工作編號回調傳遞。但是,如果我像這樣調用插件,我應該如何將回調傳遞給正確的方法?
$('#my-div').jPlugin('method1', settings);
如果回調函數的部分設置對象,或者我會適應的插件能接受嗎?
$('#my-div').jPlugin('method1', settings, callback);
謝謝各位!
'$( '#我-DIV')jPlugin( '方法1',設置回調);'將與您當前的插件代碼工作。你到底有什麼問題? – 2012-01-27 18:02:25
我只是完全不瞭解「通話」這一段。我認爲(參數1)引用了$('#my-div')的第二個參數。jPlugin('method1',settings);,... so「settings」。我不知道是否應該在其他地方添加回調。 – luso 2012-01-27 18:12:01
我猜,「參數」本身是指調用的所有參數,所以設置和回調,就是這樣嗎? – luso 2012-01-27 18:13:01