这里我的setTimeout函数只是在点击后立即调用,但我希望它点击10秒点击
$('#switchsubjects').click(function(e)
{
i++;
var x=$('#subject-class-switch').html();
if(i<2)
{
$(this).append('<ul id="dcl"><li class="ui-btn-inner ui-li">Class</li><li class="ui-btn-inner ui-li">Subjects</li></ul>');
e.stopPropagation();
setTimeout(rm(),10000);
}
else
{
$('#dcl').remove();
i=0;
}
});
function rm()
{
console.log("working");
$('#dcl').remove();
i=0;
}
答案 0 :(得分:1)
试试这个:
setTimeout(rm ,10000); // note no parentheses after rm
setTimeout()
函数要求第一个参数是函数引用(或字符串,但字符串几乎总是错误的选择)。通过说rm()
,您实际上是在该点调用rm
函数并将其返回值传递给setTimeout()
(在这种情况下,返回值为undefined
)。如果您传递的rm
没有通过对您的函数的引用的括号,setTimeout
可以在您指定的延迟后调用。
The doco at MDN非常适合更多信息和其他示例。
答案 1 :(得分:1)
您不理解函数调用和函数引用之间的区别。假设你有这个功能
function myFunction() {
// some code
}
然后这是一个即时函数调用
myFunction()
这是一个功能参考
myFunction
setTimeout的第一个参数必须是函数引用(或包含javascript代码的字符串,但不推荐使用)。
setTimeout(rm, 10000);
答案 2 :(得分:0)
setTimeout("rm()",10000);
否则rm()
立即执行,并且仅在10秒后评估其结果。