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 回答