为什么jquery事件代码总是需要包含在函数中?

时间:2016-05-03 09:27:51

标签: javascript jquery

我有两个文件index.phpsettings.php。 在index.php上有一个按钮,用户可以在点击时将用户重定向到settings.php

<div id="settings">
    Settings
</div>

<script>
$("#settings").on
(
    "click",
    function()
    {
        window.location.href = "settings.php";
    }
);
</script>

settings.php上还有一个按钮,点击后会再次重定向回index.php

<div id="menü">
    Menü
</div>

<script>
$("#menü").on("click", redirect("index.php"));

function redirect(url)
{
    window.location.replace(url);
}
</script>

但如果我点击“设置”按钮,则settings.php正在加载,我会立即重定向到index.php

但是,如果我使用此代码,则它不会立即重定向:

$("#menü").on("click", function() { redirect("index.php");});

如果我使用此类事件,为什么我总是需要在function()中包装所有内容?

1 个答案:

答案 0 :(得分:1)

.on()函数的第二个参数应该是回调函数或匿名函数。因此,在您的情况下,第二个参数是函数调用,因此它将直接调用函数而无需等待click事件。