代码之家  ›  专栏  ›  技术社区  ›  Dycey

基于输入类型的jquery重载

  •  0
  • Dycey  · 技术社区  · 14 年前

    我想创建一个jquery函数,它可以附加到表单元素change()事件,但是让该函数根据表单元素的类型(input、select、radio、password)决定要做什么。

    问题是,我不确定最好的方法——编写一个大型函数,在内部决定要做什么,或者编写一种工厂函数,根据元素的类型将适当的函数附加到元素上……我是在重新发明轮子吗?也就是说,jquery中是否有这样的默认方法。

    [附加:如果它影响决策,那么函数需要在load()上调用,也需要在change()上调用,并且能够应用/调用会更好吗?函数只有一次]

    2 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    $.fn.myPlugin = function() {
       return this.each(function() {
         switch(this.nodeName) {
           case "INPUT":
             switch(this.type) {
               case "radio":
                 $(this).change(function() { .... });
                 break;
               case "text":
                 $(this).change(function() { .... });
                 break;
               /*password, etc....*/
             }
             break;
           case "SELECT":
             $(this).change(function() { .... });
             break;
           case "TEXTAREA":
             $(this).change(function() { .... });
             break;
         }         
       });
    };
    

    (function($) {
        function method1() { ... }
        function method2() { ... }
        function method3() { ... }
    
        $.fn.myPlugin = function() {
           return this.each(function() {
             switch(this.nodeName) {
               case "INPUT":
                 switch(this.type) {
                   case "radio":
                     $(this).change(method1);
                     break;
                   case "text":
                     $(this).change(method3);
                     break;
                   /*password, etc....*/
                 }
                 break;
               case "SELECT":
                 $(this).change(method1);
                 break;
               case "TEXTAREA":
                 $(this).change(method2);
                 break;
             }         
           });
        };    
    })(jQuery);
    

        2
  •  1
  •   Kalle    14 年前