jQuery - 函数在没有被告知的情况下运行,请指教

Tr3*_*r3y 3 jquery function

我正在用jQuery写一个心理学实验.我想编写一个函数,当用户按下p或q时将开始练习.我有那个工作:

$(function trial() {
$("body").keydown(function(e) {
    if (e.which == 81 || e.which == 80)
        {
        $(".message").text("exercise begun (timestamp)");
        var refreshId = setTimeout(timeout, 2000);
        }
});
});
Run Code Online (Sandbox Code Playgroud)

但我对一件事感到困惑:这个函数,trial(),自动运行.我想打电话给它,让它运行.例如,这个功能

function timeout(x) {
var x = trialNum
$(".message").prepend("Timeout (Trial " + x + ")<br>");
}
Run Code Online (Sandbox Code Playgroud)

通过trial()调用它会表现得很好,除非被调用,否则它不会运行.我认为这与$符号和"范围"有关?所有帮助赞赏.

哦! 另外,还有一个问题.我试图制作一个递归的jQuery函数,并且遇到了很多麻烦.什么是使函数调用的最佳方法?

T.J*_*der 10

这是因为你将它的引用传递给$()(又名jQuery()),这是ready函数的快捷方式,并在加载DOM时运行.


偏离主题:BTW,通过这样做,你将该函数用作右手值(就像=标志右侧的东西).这使它成为一个函数表达式.既然你已经命名了函数(这是一件好事),它就是一个命名函数表达式.这些在历史上在各种JavaScript实现中都不能很好地工作.大多数当前的浏览器(现在)都可以,除了IE9之前的IE,它将创建两个完全独立的功能,更多这里:Double take