我正在开发一个简单的jquery插件,我很难设置方法结构。请有人请赐教。我正在使用官方Jquery Authoring文档中描述的插件结构。
我遇到的问题是当调用私有函数_generateID时,函数实际上返回函数文本(function(){return this ..)而不是'hi'。
(function( $ ){
var methods = {
init : function( options ) {
return this.each(function() {
});
},
_generateID : function() {
return this.each(function() {
return 'hi';
});
},
create : function( options ) {
return this.each(function() {
var settings = {
'id' : methods._generateID,
};
if ( options ) { $.extend( settings, options ); }
$('<div>', {
id : settings.id,
}).appendTo(this);
});
},
destroy : function( id ) {
return this.each(function(){
$(window).unbind('#'+id);
$('#'+id).remove();
});
}
};
$.fn.workzone = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.workzone' );
}
};
})( jQuery );
答案 0 :(得分:4)
您必须使用括号methods._generateID()
调用函数。
答案 1 :(得分:0)
你在哪里打电话给这个职能?我只看到:
var settings = {
'id' : methods._generateID,
};
也许你的意思是:
var settings = {
'id' : methods._generateID(),
};
函数调用采用return_value = function_name(arg_list);
答案 2 :(得分:0)
你来自哪里。在插件内或从外面打电话。
Headshota的answer用于调用插件中的方法。
$('div').pluginName('_generateID', arg0, arg1, ...); //Way to call a plugin method from outside out side plugin and pass arguements.
注意,将方法名称作为第一个字符串参数传递,然后传递其他参数。