我需要首次延迟功能,然后延迟正常使用
var delaytime = 2000;
var $this = $(this);
然后
setTimeout(function() {
$this.addClass('show');
}, 5000 + delaytime);
无论如何只运行一次上面的函数,然后用下面的函数替换? (删除5000延迟)
setTimeout(function() {
$this.addClass('show');
}, delaytime);
我试过,关闭方法,似乎不起作用,请给我一些提示,非常感谢:)
答案 0 :(得分:2)
使用函数并将超时作为参数传递
var delaytime = 2000;
var $this = $(this);
function rundelay(delay) {
setTimeout(function() {
$this.addClass('show');
rundelay(delaytime);
}, delay);
}
rundelay(5000 + delaytime);
答案 1 :(得分:1)
设置在超时内执行的函数内的较短超时。
然后通过超时延迟调用此函数:
function timeoutTrigger(){
var out = $('#out');
out.text(out.text() + '.');
// Place here what should happen every iteration, like
// $this.addClass('show');
setTimeout(timeoutTrigger, 250); // Short delay
};
setTimeout(timeoutTrigger, 1500); // Long initial delay
请参阅此jsFiddle:http://jsfiddle.net/6a0db6rq/
答案 2 :(得分:1)
<强> demo 强>
例如,如果您希望在鼠标悬停事件中发生此延迟,我认为这就是您想要的:
$('.myelement').on('mouseover', function(){
var $this = $(this);
var delaytime = $this.hasClass('notfirsttime') ? 2000 : 7000;
setTimeout(function(){
$this.addClass('show notfirsttime');
}, delaytime);
});
您可能还希望clearTimeout
上的mouseout
:
var mouseOverTimeout = null;
$('.myelement').on('mouseover', function(){
/* code */
});
$('.myelement').on('mouseout', function(){
$(this).removeClass('show');
clearTimeout(mouseOverTimeout);
});
答案 3 :(得分:0)
此代码将为您做到
var timer = setTimeout(function () {
clearTimeout(timer);
$this.addClass('show');
timer = setTimeout(function myfunction() {
}, 4000);
}, 5000);