Jquery 向函数提供命名函数时,函数不工作
我不知道为什么这两段代码不能产生相同的结果。在第一个示例中,我创建了一个函数并传递它,在第二个示例中,我编写了一个匿名函数Jquery 向函数提供命名函数时,函数不工作,jquery,anonymous-function,Jquery,Anonymous Function,我不知道为什么这两段代码不能产生相同的结果。在第一个示例中,我创建了一个函数并传递它,在第二个示例中,我编写了一个匿名函数 function funct() { $("p").slideUp(1000); } $(document).ready(funct()); $(document).ready(function() { $("p").slideUp(1000); }); 第二个有效,第一个无效。有人能告诉我为什么吗?当你这样做时: $(docu
function funct() {
$("p").slideUp(1000);
}
$(document).ready(funct());
$(document).ready(function() {
$("p").slideUp(1000);
});
第二个有效,第一个无效。有人能告诉我为什么吗?当你这样做时:
$(document).ready(funct());
您正在立即执行func()
,并将其返回值传递给.ready()
方法,这不是您想要的。它不是在函数执行之前等待文档准备就绪。您可能想做的是:
$(document).ready(funct);
这样,您只需将函数引用传递给.ready()
方法,它就可以稍后而不是立即执行该函数,然后它的行为将与匿名函数示例相同
要立即执行一个函数,请将参数放在它后面,如funct()
。要将函数作为引用传递给您要传递给的函数/方法,请省去参数,只需传递名称func
$(document)。ready()将函数作为其参数,因此您必须将函数传递给它。
要么这样做:
function funct() {
return function() {
$("p").slideUp(1000);
}
}
$(document).ready(funct());
或者正如其他人所说,只需将函数的引用作为参数传递,如下所示:
$(document).ready(funct);
为了理解为什么这不起作用,让我们检查一下执行以下代码时会发生什么:
$(document).ready(funct());
首先执行funct()
。这可能会也可能不会返回某些内容。如果它需要像return 1
这样的内容,那么它将作为$(document.ready(…)
的参数提供。在这种情况下,返回null
或undefined
。您需要的是提供对$(document).ready(…)
的函数引用。您可以通过将funct
传递给它来实现这一点(与任何其他变量非常相似)
类似地,拥有一个匿名函数将返回该匿名函数的函数引用,然后由
$(document)使用。ready(…)
为什么不将()
作为ready处理程序删除并保存额外的代码呢?如果这样做有效,我不建议通过调用其他函数来返回函数引用,只是使用funct()
而不是funct
。我只是编辑了我的答案。根据他的需要,返回函数可能更好(例如,根据某些条件返回不同的函数)