繁体   English   中英

编写更好的jQuery插件

[英]Writing a better jQuery plugin

目前我有我的jQuery插件运行它的逻辑在if statments。

例如,我有:

(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);

没有理由多次检查动作,是吗? 你也可以使用其他if.I不喜欢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]();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM