在document.ready中调用函数

use*_*063 3 jquery

我可以通过使用"onclick"事件来调用document.ready(function(){})中的函数吗?

      document.ready(function(){
      function MyFunction()
                {
                  alert("Hello");
                }
                });

<a href="#" onclick="javascript:MyFunction()"></a>
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 10

不,你不能这样做,因为onclick处理程序eval()用来评估javascript表达式并eval()期望MyFunction()成为一个全局函数,当它在.ready()处理程序中定义时,它不是一个全局函数,所以eval()找不到它.

你可以通过在ready()处理程序中定义它来使MyFunction成为一个全局函数,如下所示:

window.MyFunction = function() {...}
Run Code Online (Sandbox Code Playgroud)

但是,最好只使用jQuery的事件处理程序,而不是在HTML中指定事件处理程序.

<a id="myLink" href="#">Click Me</a>

$(document).ready(function() {
    $("#myLink").click(function() {
        alert("Hello");
    });
});
Run Code Online (Sandbox Code Playgroud)