Javascript 为什么jquery事件代码总是需要包装在函数中?
我有两个文件Javascript 为什么jquery事件代码总是需要包装在函数中?,javascript,jquery,Javascript,Jquery,我有两个文件index.php和settings.php。 在index.php上有一个按钮,单击该按钮可将用户重定向到settings.php <div id="settings"> Settings </div> <script> $("#settings").on ( "click", function() { window.location.href = "settings.php"; } );
index.php
和settings.php
。
在index.php
上有一个按钮,单击该按钮可将用户重定向到settings.php
<div id="settings">
Settings
</div>
<script>
$("#settings").on
(
"click",
function()
{
window.location.href = "settings.php";
}
);
</script>
<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()
中?函数.on()的第二个参数应该是回调函数或匿名函数。因此,在您的例子中,第二个参数是函数调用,因此它将直接调用函数,而无需等待单击事件代码>立即触发该功能是。因此,您要么需要将其包装在function(){..}
中,要么可以执行$(“#menu”)。在(“单击”{url:“index.php”},重定向)
并读取传递给重定向
函数的参数。CSS定制的简单链接也可以做同样的事情,更自然,不需要任何脚本。做尽可能简单的事情。为什么是函数?方法上的声明为接受回调函数。实际上,您可以创建一个函数来为您生成重定向函数。LOLfunction redirectTo(url){return function(){redirect(url);};}
并像这样使用它。$('blah')。单击(redirectTo('index.php'))
很酷,感谢@YuryTarabankoI提供的提示,我相信这是函数重定向(event){var url=event.data.url;}
,因此,您可以通过event.data
检索事件中作为参数传入的内容。