在document.ready中调用函数

时间:2012-04-10 06:17:46

标签: jquery

我可以使用“onclick”事件调用document.ready(function(){})中的函数吗?

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

<a href="#" onclick="javascript:MyFunction()"></a>

3 个答案:

答案 0 :(得分:10)

不,你不能这样做,因为onclick处理程序使用eval()来评估javascript表达式,eval()期望MyFunction()成为一个全局函数,并且在.ready()内定义它1}} handler,它不是一个全局函数,因此eval()找不到它。

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

window.MyFunction = function() {...}

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

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

$(document).ready(function() {
    $("#myLink").click(function() {
        alert("Hello");
    });
});

答案 1 :(得分:1)

“javascript:”是不必要的。是的,你可以。只要您在可访问的范围(换句话说,全局范围)中定义它。

function example() { console.log("Called!"); }

$(document).ready(function() { /* code */ example(); /* code */ });

<a href="#" onclick="example();">Example</a>

答案 2 :(得分:0)

如果您试图将代码保留在全局范围之外,可以执行以下操作:

var myApp = {

    myFunction: function() {
        alert("Hello");
    }

};


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

但是,您将无法调用匿名函数中定义的任何函数,因为它们都超出范围且无法访问。

简而言之,如果在document.ready中定义了该函数,则无法从document.ready之外调用函数。