2017-01-13 52 views
1

我想调用一个按钮点击事件的函数。该功能是在另一个js文件中定义的,我在function.php文件中有enqueue该文件。我可以看到该文件已从enqueue加载。但我得到错误按钮点击调用函数不起作用

errorReferenceError: myFunction is not defined

当我点击那个按钮。我要显示该按钮的下拉菜单中单击

<button onclick="jQuery(document).ready(function($) {myFunction();});" class="dropbtn"><i class="fa fa-bars fa-lg" aria-hidden="true"></i></button> 

custom.js

(function($) { 

    function myFunction() { 

     document.getElementById('myDropdown').classList.toggle('show'); 

    } 

    window.onclick = function(event) { 

     if (!event.target.matches('.dropbtn')) { 

     var dropdowns = document.getElementsByClassName('dropdown-content'); 
     var i; 

      for (i = 0; i < dropdowns.length; i++) { 

       var openDropdown = dropdowns[i]; 

       if (openDropdown.classList.contains('show')) { 

        openDropdown.classList.remove('show'); 

       } 

      } 

     } 

    } 

})(jQuery); 
+0

只需从外部写'myFunction'到'$(function(){})'。并且你的定位属性应该是'onclick = return myFunction();' – Vineet

回答

0

的问题是与功能的范围,进行更详细的说明,请参阅this link。要解决它,请尝试在js文件本身内调用该函数。例如:

$(document).ready(function(){ 
    function myFunction(){ 
    ... 
    } 

    $(".dropbtn").click(myFunction()); 
}); 
+0

显示同样的问题 –

+0

你确定在同一个jQuery函数中放置了函数和调用吗? – Manikiran

+0

尝试引用http://stackoverflow.com/questions/5067887/function-is-not-defined-uncaught-referenceerror和其他类似的问题。它是一个简单的解决方案,但你只需要知道关键。 – Manikiran

0

应工作

$(document).ready(function(){ 
    function myFunction(){ 
     alert ('Say something!'); 
    } 

    $(".dropbtn").click(function(){ 
     myFunction(); 
    }); 
}); 
0

我注意到,你不需要使用ready功能按钮的onclick属性,因此这个就足够了:

<button onclick="myFunction();" class="dropbtn"> 
    <i class="fa fa-bars fa-lg" aria-hidden="true"></i> 
</button> 

但是,不要这样做,您可以从按钮中删除该onclick属性(避免内联脚本,维护代码是一种好的做法ility和安全原因),并尝试解决Manikiran建议你,但有一个小的差异,可以定义myFunctioncustom.js不执行它:

jQuery(function(){ 
    function myFunction(){ 
    jQuery('#myDropdown').toggle('show'); //this is the jQuery way 
    } 

    // remaining code of your custom.js 

    jQuery(".dropbtn").click(myFunction); // binds the click event to 
             // all the buttons with the dropbtn class 
}); 

我注意到你不使用的$有些部分,您可以用jQuery关键字全部替换它们。