2015-09-24 179 views
1

如何在onclick中访问test2()函数,如plain函数中所示,包装在圆括号中以指示运行时将函数返回到父范围,一旦返回函数为使用第4行执行,也许阅读这些步骤将有所帮助。jquery嵌套函数访问

<p onclick='test().test2()'> some text </p>; 

<script> 

    //the below declaration will not change 
    var jQuery = 'Hi'; 
    (function ($) { 
    function test(){ 
     function test2(){ 
     alert('text') 
     } 
     alert($) 
    } 
    console.log($); 
    test().test2() 
    })(jQuery) 

</script> 
+2

一个简单的建议,看看在文档为基础javascript,尤其是javascript中的OOP。 – Jai

回答

0

如果您在与您希望访问函数的位置相同的范围内声明函数,则只能访问test2。在这种情况下,这意味着您需要在外部范围中声明该函数。

您可以通过在外部范围是这样设置变量这样做:

var test2; 
var jQuery = 'Hi'; 
    (function ($) { 
    function test(){ 
     test2 = function(){ 
     alert('text') 
     } 
     alert($) 
    } 
    console.log($); 
    test(); //test needs to be called first to define test2. 
    test2(); 
    })(jQuery) 
0

我检查了两次,这个工程:

var jQuery = 'Hi'; 
    window.test = (function ($) { 
     function test(){ 
      this.test2 = function() { 
       alert('text') 
      }; 
      alert($); 
      return this; 
     } 
     console.log($); 
     test().test2(); 

     return test; 
    })(jQuery); 
+0

这不是一般问题的最佳解决方案,但此代码有效。 – Aircraft5

+0

我在Chrome控制台中检查过。我在Chrome控制台中执行了代码。然后,我将'onclick ='test()。test2()'添加到页面的“body”元素。点击后,我有两个警报('嗨'和'文字')。 – Aircraft5