jquery 设置超时 运行 一次然后用其他函数替换
jquery set timeout run once then replace by other function
我第一次需要延迟更多功能,以后再延迟正常
var delaytime = 2000;
var $this = $(this);
然后
setTimeout(function() {
$this.addClass('show');
}, 5000 + delaytime);
总之 运行 上面的函数只有一次,然后用下面的函数替换? (删除 5000 延迟)
setTimeout(function() {
$this.addClass('show');
}, 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);
在超时内执行的函数中设置更短的超时。
然后以较长的延迟通过超时调用此函数:
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/
例如,如果您希望这种延迟发生在鼠标悬停事件上,我认为这就是您想要的:
$('.myelement').on('mouseover', function(){
var $this = $(this);
var delaytime = $this.hasClass('notfirsttime') ? 2000 : 7000;
setTimeout(function(){
$this.addClass('show notfirsttime');
}, delaytime);
});
您可能还想 clearTimeout
on mouseout
:
var mouseOverTimeout = null;
$('.myelement').on('mouseover', function(){
/* code */
});
$('.myelement').on('mouseout', function(){
$(this).removeClass('show');
clearTimeout(mouseOverTimeout);
});
我第一次需要延迟更多功能,以后再延迟正常
var delaytime = 2000;
var $this = $(this);
然后
setTimeout(function() {
$this.addClass('show');
}, 5000 + delaytime);
总之 运行 上面的函数只有一次,然后用下面的函数替换? (删除 5000 延迟)
setTimeout(function() {
$this.addClass('show');
}, 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);
在超时内执行的函数中设置更短的超时。
然后以较长的延迟通过超时调用此函数:
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/
例如,如果您希望这种延迟发生在鼠标悬停事件上,我认为这就是您想要的:
$('.myelement').on('mouseover', function(){
var $this = $(this);
var delaytime = $this.hasClass('notfirsttime') ? 2000 : 7000;
setTimeout(function(){
$this.addClass('show notfirsttime');
}, delaytime);
});
您可能还想 clearTimeout
on mouseout
:
var mouseOverTimeout = null;
$('.myelement').on('mouseover', function(){
/* code */
});
$('.myelement').on('mouseout', function(){
$(this).removeClass('show');
clearTimeout(mouseOverTimeout);
});