`.click(handler())`和`.click(handler)`之间的区别

时间:2012-06-08 11:15:20

标签: javascript jquery

我有以下代码。

<!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 个答案:

答案 0 :(得分:10)

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

这会调用myFun()并尝试安装它作为事件处理程序返回的任何内容。由于它没有返回任何内容,因此您实际上触发点击#myID

答案 1 :(得分:3)

阅读此.click() - 将事件处理程序绑定到click JavaScript事件,或使用JavaScript在元素上触发该事件。

您只需要编写$("#myID").click(myFun);而不是$("#myID").click(myFun());,因为当您在代码中编写myFun()时,会立即调用该函数(而不是在{{1}上触发点击事件时})。

Working Demo

答案 2 :(得分:2)

尝试使用此功能在click事件上运行该功能:

function myFun(){
    alert(5);
}

$(document).ready(function(){
    $("#myID").click(function(){
        myFun();
    });
})

答案 3 :(得分:2)

试试这个:

这将有效

$(document).ready(function() {
    function myFun() {
        alert(5)
    }
            $("#myID").click(function(){
            myFun();
            });
});​