Javascript 如何调用jQuery嵌套函数

Javascript 如何调用jQuery嵌套函数,javascript,jquery,Javascript,Jquery,我正在尝试调用嵌套函数,但该函数不起作用 这是我试过的 脚本: (function( $ ){ $.fn.investPage = function() { function setupFCConfig(){ $('.nestedFunction').click(function(){ alert('setupFCConfig func()'); }

我正在尝试调用嵌套函数,但该函数不起作用
这是我试过的

脚本:

(function( $ ){
      $.fn.investPage = function() {    
            function setupFCConfig(){
                $('.nestedFunction').click(function(){
                    alert('setupFCConfig func()');
                });
            }
            $(".edit").on('click', function(){
                alert('edit click func()');
            }); 
            $(".cancel").on('click', function(){        
                alert('cancel click func()');   
            }); 
            $(".checkout").click(function(){        
                alert('checkout click func()');
            });
      };
})( jQuery );

$.fn.investPage();
$.fn.investPage.setupFCConfig();
setupFCConfig()
不是$.fn.investPage对象的属性,因此不能像这样调用它:

 $.fn.investPage.setupFCConfig();
(function( $ ){
      $.fn.investPage = function() {    
            $(".edit").on('click', function(){
                alert('edit click func()');
            }); 
            $(".cancel").on('click', function(){        
                alert('cancel click func()');   
            }); 
            $(".checkout").click(function(){        
                alert('checkout click func()');
            });

      };
      $.fn.investPage.setupFCConfig = function (){
           $('.nestedFunction').click(function(){
               alert('setupFCConfig func()');
           });
      }

})( jQuery );

$.fn.investPage();
$.fn.investPage.setupFCConfig();
它是一个本地函数,在声明它的范围之外不可用。如果希望它从外部作用域中可用,则需要将其指定为该外部作用域中可用的某个对象的属性

例如,您可以将该函数的定义更改为:

 $.fn.investPage.setupFCConfig();
(function( $ ){
      $.fn.investPage = function() {    
            $(".edit").on('click', function(){
                alert('edit click func()');
            }); 
            $(".cancel").on('click', function(){        
                alert('cancel click func()');   
            }); 
            $(".checkout").click(function(){        
                alert('checkout click func()');
            });

      };
      $.fn.investPage.setupFCConfig = function (){
           $('.nestedFunction').click(function(){
               alert('setupFCConfig func()');
           });
      }

})( jQuery );

$.fn.investPage();
$.fn.investPage.setupFCConfig();

仅供参考,您还需要修复拼写错误的
。单击

您使用了错误的函数作用域

(function( $ ){
      $.fn.investPage = function() {    
            $(".edit").on('click', function(){
                alert('edit click func()');
            }); 
            $(".cancel").on('click', function(){        
                alert('cancel click func()');   
            }); 
            $(".checkout").click(function(){        
                alert('checkout click func()');
            });
      };
      $.fn.investPage.setupFCConfig = function(){
          $('.nestedFunction').click(function(){
              alert('setupFCConfig func()');
          });
      };
})( jQuery );

第二个返回
investPage
对象,您可以从该对象变量访问函数。

这样使用它 在
$.fn.investPage
的范围内,
不是
$.fn.investPage
对象。因此,您的对象不知道函数
setupFCConfig()

但您可以使用:

$.fn.investPage.setupFCConfig = function(){
    $('.nestedFunction').click(function(){
            alert('setupFCConfig func()');
    });
};
实现您的目标。

将代码更改为:

(function( $ ){
  $.fn.investPage = function() {    
      this.setupFCConfig: function (){
            $('.nestedFunction').click(function(){
                alert('setupFCConfig func()');
            });
        };
        $(".edit").on('click', function(){
            alert('edit click func()');
        }); 
        $(".cancel").on('click', function(){        
            alert('cancel click func()');   
        }); 
        $(".checkout").click(function(){        
            alert('checkout click func()');
        });
  };
})( jQuery );

var instance = $.fn.investPage();
instance.setupFCConfig();

您也可以创建一个对象并将其用于名称空间,如下所示

    investPage = {
        init: function () {
            $(".edit").on('click', function(){
                alert('edit click func()');
            }); 
            $(".cancel").on('click', function(){        
                alert('cancel click func()');   
            }); 
            $(".checkout").click(function(){        
                alert('checkout click func()');
            });
            }, 
        setupFCConfig:  function (){
           $('.nestedFunction').click(function(){
                    alert('setupFCConfig func()');
           });
        }
    }


investPage.init();
investPage.setupFCConfig();

您在
setupFCConfig()
中将
click
拼错为
clicl
有一个拼写错误,
clicl
应该是
click
这将不起作用,因为您没有
investPage
的实例,要像底部一样访问setupFCConfig方法,必须将其更改为investPage的属性,即:
$.fn.investPage.setupFCConfig=function