我正在尝试创建一个与jquery ui plugin for dialogs具有相似用法的插件。我之后的用法看起来像这样
首先,要为我的插件设置选项(使用默认操作),您可以传递这样的参数。
$('#myId').dialog({
value1 : 'someValue',
value2 : 'anotherValue',
//...
});
此外,我希望能够使用“关键词”连接特定事件。例如,在jquery.UI中,您可以调用它来关闭对话框
$('#myId').dialog('close');
我的问题是我如何设置我的插件,以便它在设置中传递它做一件事,或者根据传入的关键字做其他事情?我试着查看一些jquery ui代码,但我不确定我是在理解它在做什么,甚至不知道从哪里开始只是提取这个功能。
答案 0 :(得分:3)
请查看jQuery Plugins/Authoring,特别是Plugin Methods。
示例:强> 的
(function( $ ){
var methods = {
init : function( options ) { /* THIS */ },
show : function( ) { /* IS */ },
hide : function( ) { /* GOOD */ },
update : function( content ) { /* !!! */ }
};
$.fn.tooltip = function( method ) {
// Method calling logic
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.tooltip' );
}
};
})( jQuery );
,然后... 强> 的
$('div').tooltip(); // calls the init method
$('div').tooltip({ // calls the init method
foo : 'bar'
});
$('div').tooltip('hide'); // calls the hide method
$('div').tooltip('update', 'This is the new tooltip content!'); // calls the update method
答案 1 :(得分:0)
检查您传递的对象类型:
if (typeof arguments[0] === 'string') {
// I was given a string, my convention tells me this is a command
} else if (typeof arguments[0] === 'object') {
// my convention tells me that this is an instantiation object
}
您可能还想检查对象属性,或使用$.isArray()