Javascript Jquery:无限循环和暂停
我有这个密码Javascript Jquery:无限循环和暂停,javascript,jquery,loops,Javascript,Jquery,Loops,我有这个密码 var timeout = 0; $('#container td').each(function(){ var td = this; setTimeout(function() { var new_text = $(td).find(text).html(); popup_text.html(new_text); popup.fadeIn('fast').delay(1000).fadeOut('slow'); }, timeou
var timeout = 0;
$('#container td').each(function(){
var td = this;
setTimeout(function() {
var new_text = $(td).find(text).html();
popup_text.html(new_text);
popup.fadeIn('fast').delay(1000).fadeOut('slow');
}, timeout);
timeout += 1000 + 1000;
});
我从表格单元格中获取文本,并延迟显示在图层中。
1个问题:如何使此代码以无休止的循环运行?
2问题:当您将鼠标悬停在popop循环上时,如何执行此操作暂时停止,然后继续?
非常感谢 一种方法是将要重复的代码放在函数中,并让函数在末尾重复自身:
var timeout = 1000;
var action = function() {
// Do stuff here
setTimeout(action, timeout);
};
action();
然而,正如ahren所建议的,setInterval可能更好:
var timeout = 1000;
var action = function() {
// Do stuff here
};
setInterval(action, timeout);
差别很小,但是如果机器由于某种原因运行缓慢,setInterval版本将平均每秒运行一次代码,而setTimeout版本最多每秒运行一次代码
但是,这两种方法都不能很好地与each()配合使用,因此您需要将弹出窗口序列存储在某个位置并逐步执行:
var timeout = 1000;
var tds = $('#container td');
var index = 0;
var action = function() {
var td = tds[index];
var new_text = $(td).html();
popup.html(new_text);
popup.fadeIn('fast').delay(1000).fadeOut('slow');
if(++index >= tds.length)
index = 0;
};
setInterval(action, timeout);
action();
最后,为了避免在弹出窗口悬停时移动到下一个弹出窗口,您可以在函数的开头添加一个检查。还需要重新安排动画,以便它们“检查悬停-淡出-更改文本-淡入”
jsidle:一种方法是将要重复的代码放在函数中,并让函数在末尾重复自身:
var timeout = 1000;
var action = function() {
// Do stuff here
setTimeout(action, timeout);
};
action();
然而,正如ahren所建议的,setInterval可能更好:
var timeout = 1000;
var action = function() {
// Do stuff here
};
setInterval(action, timeout);
差别很小,但是如果机器由于某种原因运行缓慢,setInterval版本将平均每秒运行一次代码,而setTimeout版本最多每秒运行一次代码
但是,这两种方法都不能很好地与each()配合使用,因此您需要将弹出窗口序列存储在某个位置并逐步执行:
var timeout = 1000;
var tds = $('#container td');
var index = 0;
var action = function() {
var td = tds[index];
var new_text = $(td).html();
popup.html(new_text);
popup.fadeIn('fast').delay(1000).fadeOut('slow');
if(++index >= tds.length)
index = 0;
};
setInterval(action, timeout);
action();
最后,为了避免在弹出窗口悬停时移动到下一个弹出窗口,您可以在函数的开头添加一个检查。还需要重新安排动画,以便它们“检查悬停-淡出-更改文本-淡入”
jsIDLE:如果您喜欢简短的清洁方式,请使用并编写:
$.fn.waitNoHover = function(){
return this.is(':hover') ? this.wait('mouseleave') : this;
};
$('#popups div').repeat().each($).fadeIn('fast',$)
.wait(200).waitNoHover().fadeOut('slow',$).all()
请参见上的内容,如果您喜欢简短的清洁方式,请使用并写下:
$.fn.waitNoHover = function(){
return this.is(':hover') ? this.wait('mouseleave') : this;
};
$('#popups div').repeat().each($).fadeIn('fast',$)
.wait(200).waitNoHover().fadeOut('slow',$).all()
请在
setInterval
上查看此信息,这是您的朋友。条件检查也是如此。思考if
语句。创建一个JSFIDLE,使其更易于使用。setInterval
是您的朋友。条件检查也是如此。思考if
语句。创建一个JSFIDLE,使其更易于使用。