我写了一个简单的jQuery插件,但我想让它更高级,所以我可以做以下事情:
$.myplugin.close();
$.myplugin.open();
$.myplugin.next();
$.myplugin.prev();
如何编写可以像这样调用的插件?
-------------------------更新--------------------- ----
感谢@Craig MacGregor,感谢它。
但要调用该函数,它需要如下所示
$(this).myplugin.load();
答案 0 :(得分:3)
您可以将对象分配给“myplugin”,如下所示:
$.myplugin = {
close: function(){
//code
},
open: function(){
//code
},
next: function(){
//code
},
prev: function(){
//code
}
};
答案 1 :(得分:2)
只是一个例子:
(funciton($) {
var methods = {
init: function() {},
close: function() {},
open: function() {},
prev: function() {},
next: function() {},
};
$.fn.myplugin = function (method) {
if (methods[method]) {
return methods[method].apply(this, [].slice.call(arguments, 1));
} else if (typeof method == 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error( 'Method ' + method + ' does not exist on myplugin' );
}
};
}(jQuery));
//usage
$(selector).myplugin();
// call methods
$(selector).myplugin('close');
$(selector).myplugin('open');
$(selector).myplugin('next');
$(selector).myplugin('prev');