6

次のコードがあります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
    <script type="text/javascript" src="jquery-1.4.2.min.js" ></script>
    <script type="text/javascript">
    function myFun()
    {
        alert(5)
    }
        $(document).ready(function(){
            $("#myID").click(myFun());
        })
    </script>
 </head>

 <body>
  <input type="button" value="Click it" id="myID" />
 </body>
</html>

このコードを実行するとalert(5)、ページが読み込まれるときに来ます。私が書いたら

$("#myID").click(myFun)

ボタンをクリックしたときにのみアラートが表示されます。なぜこのように振る舞うのですか?

4

4 に答える 4

10
$("#myID").click(myFun());

これはmyFun()、イベント ハンドラーとして返されるものを呼び出してインストールしようとします。何も返さないため、実際には のクリックをトリガー#myIDしています。

于 2012-06-08T11:17:22.527 に答える
3

この.click()を読んでください- イベント ハンドラーをclickJavaScript イベントにバインドするか、JavaScript を使用して要素でそのイベントをトリガーします。

コードを記述すると、(クリックイベントが発生したときではなく)関数がすぐに呼び出されるため、$("#myID").click(myFun);の代わりに記述する必要があります。$("#myID").click(myFun());myFun()#myID

ワーキングデモ

于 2012-06-08T11:17:50.510 に答える
2

クリックイベントで関数を実行するには、これを試してください。

function myFun(){
    alert(5);
}

$(document).ready(function(){
    $("#myID").click(function(){
        myFun();
    });
})
于 2012-06-08T11:21:47.860 に答える
2

これを試して:

これはうまくいきます

$(document).ready(function() {
    function myFun() {
        alert(5)
    }
            $("#myID").click(function(){
            myFun();
            });
});​
于 2012-06-08T11:39:09.363 に答える