延迟函数调用jquery

时间:2015-12-23 09:31:15

标签: javascript jquery html css

我正在尝试延迟函数调用,但此刻我没有错误,也没有调用函数。

这是我正在处理的代码:

http://jsbin.com/cipewozali/edit?html,css,js,console,output

特别是它的功能如下:

function setRandomPos(elem) {
    $(elem).css({
        'transition-duration': getRandomInt(400000, 500000) + 'ms',
        'transform': 'translateX(' + getRandomPos().x + 'px) translateY(' + getRandomPos().y + 'px)'
    })

    setTimeout(fadeOut(elem), 200);

    /*setTimeout(function() { 
        fadeOut(elem);
    }.bind(elem), 200);*/
}

我既尝试了功能也没有功能。我想要的是在几毫秒后我的fadeOut(elem)函数被执行。

亲切的问候。

2 个答案:

答案 0 :(得分:0)

问题是你已经在调用方法而不是在200ms之后指定它需要执行的函数的引用。

所以这个:

 setTimeout(fadeOut(elem), 200);

已在此行执行fadeOut代码,无论是:

 setTimeout(fadeOut, 200);

将在200ms后调用fadeOut方法。

由于您要指定元素,您可以添加匿名包装函数,如:

setTimeout(function(){
    fadeOut(elem);
}, 200);

在现代浏览器中,您可以在延迟后添加可选参数,例如:

setTimeout(fadeOut, 200, elem);

答案 1 :(得分:-1)

您应该使用 delay

function setRandomPos(elem){
    $(elem).css({
        'transition-duration': getRandomInt(400000, 500000)+'ms',
        'transform': 'translateX('+getRandomPos().x+'px) translateY('+getRandomPos().y+'px)'
    }).delay(200,function(){fadeOut(elem)});
}