Why is jQuery click-event triggered when page loaded?

巧了我就是萌 提交于 2019-12-04 12:25:28

Because of your code:

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

is wrong and has to be:

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

Your code would call myFunc() first and than simulate a onclick event.

As seen in the documentation:

What you did is this: (as myFunc returns null)

click( )

Triggers the click event of each matched element. Causes all of the functions that have been bound to that click event to be executed. To trigger the click event on all of the paragraphs on the page: $("p").click();

What you want is this:

click( fn ) Binds a function to the click event of each matched element. The click event fires when the pointing device button is clicked over an element. A click is defined as a mousedown and mouseup over the same screen location. The sequence of these events is:

With the myFunc() in $("#map").click(myFunc()) you’re calling the function references by myFunc and only its return value is passed to $("#map").click. If you want to pass the myFunc function itself, leave the parenthesis away and use just the function name:

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

Should be

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

This way, you give the function as a parameter. $("#map").click(myFunc()); triggered the function, and gives its result as a parameter.

You're calling your function in your click event handler. Do this instead:

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

You only pass the name of the function, without parenthesis, when passing it as an argument to an event handler (or any other function).

should be

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

and not

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

passing myFunc() instead of myFunc actually invoke this function

That is expected from your code because here:

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

The parentheses () after the function will cause it to be called.

Try this instead:

<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>
Omer Bokhari
$("#map").click(myFunc);

NOT

$("#map").click(myFunc());
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!