jquery设置超时运行一次,然后由其他函数替换
我需要延迟功能更多的第一次,然后延迟正常的未来jquery设置超时运行一次,然后由其他函数替换,jquery,settimeout,Jquery,Settimeout,我需要延迟功能更多的第一次,然后延迟正常的未来 var delaytime = 2000; var $this = $(this); 然后 无论如何,只运行上面的函数一次,然后替换为下面的函数?(删除5000个延迟) 我尝试了开关方法,似乎不起作用,请给我一些提示,非常感谢:)使用函数并将超时作为参数传递 var delaytime = 2000; var $this = $(this); function rundelay(delay) { setTimeout(funct
var delaytime = 2000;
var $this = $(this);
然后
无论如何,只运行上面的函数一次,然后替换为下面的函数?(删除5000个延迟)
我尝试了开关方法,似乎不起作用,请给我一些提示,非常感谢:)使用函数并将超时作为参数传递
var delaytime = 2000;
var $this = $(this);
function rundelay(delay) {
setTimeout(function() {
$this.addClass('show');
rundelay(delaytime);
}, delay);
}
rundelay(5000 + delaytime);
使用函数并将超时作为参数传递
var delaytime = 2000;
var $this = $(this);
function rundelay(delay) {
setTimeout(function() {
$this.addClass('show');
rundelay(delaytime);
}, delay);
}
rundelay(5000 + delaytime);
这个代码就可以了
var timer = setTimeout(function () {
clearTimeout(timer);
$this.addClass('show');
timer = setTimeout(function myfunction() {
}, 4000);
}, 5000);
这个代码就可以了
var timer = setTimeout(function () {
clearTimeout(timer);
$this.addClass('show');
timer = setTimeout(function myfunction() {
}, 4000);
}, 5000);
在函数内设置较短的超时,get在超时内执行 然后通过延时较长的超时调用此函数:
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
请参阅此JSFIDLE:在函数中设置较短的超时时间,该函数在超时时间内执行get 然后通过延时较长的超时调用此函数:
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:
例如,如果您希望鼠标悬停事件发生延迟,我想这就是您想要的:
$('.myelement').on('mouseover', function(){
var $this = $(this);
var delaytime = $this.hasClass('notfirsttime') ? 2000 : 7000;
setTimeout(function(){
$this.addClass('show notfirsttime');
}, delaytime);
});
您可能还希望在鼠标移出时清除超时:
var mouseOverTimeout = null;
$('.myelement').on('mouseover', function(){
/* code */
});
$('.myelement').on('mouseout', function(){
$(this).removeClass('show');
clearTimeout(mouseOverTimeout);
});
例如,如果您希望鼠标悬停事件发生延迟,我想这就是您想要的:
$('.myelement').on('mouseover', function(){
var $this = $(this);
var delaytime = $this.hasClass('notfirsttime') ? 2000 : 7000;
setTimeout(function(){
$this.addClass('show notfirsttime');
}, delaytime);
});
您可能还希望在鼠标移出时清除超时:
var mouseOverTimeout = null;
$('.myelement').on('mouseover', function(){
/* code */
});
$('.myelement').on('mouseout', function(){
$(this).removeClass('show');
clearTimeout(mouseOverTimeout);
});
你有一个循环还是应该只发生两次?这会发生很多次:)每次$this have.active类然后运行函数,但我需要更多的第一次延迟:)thanksOk所以这是在一个事件上发生的,不像下面所有的答案那样循环。你能在添加
.active
类的地方提供代码吗?为什么你知道这是由事件引起的???是的,这是一个后加载事件,代码在其他函数中有变量,我不知道如何对此函数进行演示,下次我将在这里记录所有细节,非常感谢,你下面的答案为我工作!!!谢谢:)我猜到了,因为这是一个很奇怪的想法!很高兴它有帮助。你有一个循环还是应该只发生两次?这将发生很多次:)每次$this有。活动类然后运行函数,但我需要更多的第一次延迟:)谢谢,这是在一个事件上发生的,而不是像下面所有答案那样循环。你能在添加.active
类的地方提供代码吗?为什么你知道这是由事件引起的???是的,这是一个后加载事件,代码在其他函数中有变量,我不知道如何对此函数进行演示,下次我将在这里记录所有细节,非常感谢,你下面的答案为我工作!!!谢谢:)我猜到了,因为这是一个很奇怪的想法!很高兴它有帮助。如果(延迟=5000+delaytime)延迟=delaytimefor?由于第一次延迟被传递为5000+delaytime,它只是第一次替换它,之后它将永远不会是5000+delaytime,因此它只是一次检查。我认为您应该将这一行移到setTimeout
中。想想看。。。会发生什么?我会编辑你的答案,你会告诉我你是否同意更改我已经编辑了我的答案,但欢迎你进一步修改,但我想现在应该可以了for?由于第一次延迟被传递为5000+delaytime,它只是第一次替换它,之后它将永远不会是5000+delaytime,因此它只是一次检查。我认为您应该将这一行移到setTimeout
中。想想看。。。会发生什么?我会编辑你的答案,你会告诉我你是否同意更改我已经编辑了我的答案,但欢迎你进一步修改它,但我想它现在应该可以工作了。哇…我不使用鼠标器,当插件上发生“后加载”事件时运行,我将类添加到主体,你的答案对我有效,非常感谢:)哇…我不使用鼠标覆盖,这个运行在插件上的“后加载”事件时,我将类添加到主体中,您的答案对我有效,非常感谢:)非常感谢:)这对我无效,但是,是的,我看到了您的演示,工作完美!!!我的代码问题,谢谢你漂亮的回答和演示:)像伊萨克斯:)这不适合我,但是,是的,我看到你的演示,工作完美!!!我的代码问题,谢谢你的回答和演示:)喜欢吗