Javascript 编写更好的jQuery插件
目前,我有我的jQuery插件在运行,它的逻辑在if语句中 例如,我有:Javascript 编写更好的jQuery插件,javascript,jquery,events,plugins,Javascript,Jquery,Events,Plugins,目前,我有我的jQuery插件在运行,它的逻辑在if语句中 例如,我有: (function($) { $.fn.myplugin = function(action) { if(action == "foo"){ } if(action == "bar"){ } if(action == "grapefruits"){ } } })(jQuery
(function($) {
$.fn.myplugin = function(action) {
if(action == "foo"){
}
if(action == "bar"){
}
if(action == "grapefruits"){
}
}
})(jQuery);
有没有更好的办法
与事件处理程序一样,我可以在插件中声明它们吗?您可以在对象中存储不同的函数并使用索引器,如下所示:
(function($) {
var methods = {
foo: function(action) { ... },
bar: function(action, someParam) { ... },
grapefruits: function(action, param1, param2) { ... },
...
};
$.fn.myplugin = function(action) {
methods[action].apply(this, arguments);
}
})(jQuery);
没有理由多次检查动作,是吗?如果需要,您也可以使用else。我个人不喜欢
switch
的语法,更喜欢这种风格。你可以这样做
if(action == "foo"){
}
else if(action == "bar"){
}
else if(action == "grapefruits"){
}
else{
//this is the default/unspecified case
}
另一个选项是将每个名称存储在对象中。例如,在Python中也有很多这样的操作
var plugin_actions={
'foo':function(){},
'bar':function(){},
'grapefruits':function(){}
}
plugin_actions[action]();
第二个解决方案将丢失
此
上下文和参数。查看我的答案。我可以用$(“…”)
包装一个字符串并添加一些可以操作该字符串的函数吗?