为何在页面加载时触发jQuery点击事件?

时间:2009-10-13 07:03:20

标签: jquery events click

我有以下代码.... 当页面加载时,即使我没有点击我的div,也会调用myFunc()。为什么? 声明为“内联”的函数未被触发......嗯...... ........

<div id="map" style="background: green; height: 100px"></div>

<script type="text/javascript">
    function myFunc() {
        alert("allways triggered when page loads...");
    };

    $(document).ready(function() {

    $("#map").click(myFunc());
    $("#map").click(function() { alert("not triggered") });

    });
</script>

7 个答案:

答案 0 :(得分:10)

因为你的代码:

 $("#map").click(myFunc());

错了,必须是:

$("#map").click(myFunc);

您的代码首先调用myFunc(),然后模拟onclick事件。

如文档中所示:

你做的是:(因为myFunc返回null)

  

点击()

     

触发每个匹配元素的click事件。   导致已执行绑定到该click事件的所有函数。   要在页面上的所有段落上触发click事件:   $( “P”)点击();

你想要的是这个:

  点击(fn)   将函数绑定到每个匹配元素的click事件。   单击指向设备按钮时,会触发单击事件。单击被定义为同一屏幕位置上的mousedown和mouseup。这些事件的顺序是:

答案 1 :(得分:3)

使用myFunc()中的$("#map").click(myFunc()),您将myFunc调用函数引用,并且只将其返回值传递给$("#map").click。如果您想要传递myFunc函数本身,请将括号留下并仅使用函数名称:

$("#map").click(myFunc);

答案 2 :(得分:1)

应该是

$("#map").click(myFunc);

这样,您可以将该函数作为参数。 $("#map").click(myFunc());触发了该函数,并将其结果作为参数。

答案 3 :(得分:1)

您正在点击事件处理程序中调用您的函数。这样做:

<script type="text/javascript">
    function myFunc() {
        alert("allways triggered when page loads...");
    };

    $(document).ready(function() {

    $("#map").click(myFunc);
    $("#map").click(function() { alert("not triggered") });

    });
</script>

在将参数作为参数传递给事件处理程序(或任何其他函数)时,只传递函数的名称​​而不带括号

答案 4 :(得分:0)

$("#map").click(myFunc);

不是

$("#map").click(myFunc());

答案 5 :(得分:0)

应该是

$("#map").click(myFunc);

而不是

$("#map").click(myFunc());

传递myFunc()而不是myFunc实际调用此函数

答案 6 :(得分:0)

这可以从你的代码中得到,因为这里:

$("#map").click(myFunc());

函数后面的括号()将导致它被调用。

请改为尝试:

<script type="text/javascript">
    var myFunc = function() {
        alert("allways triggered when page loads...");
    };

    $(document).ready(function() {

    $("#map").click(myFunc);
    $("#map").click(function() { alert("not triggered") });

    });
</script>