使用 jQuery 在特定时间间隔显示和隐藏 div
Posted
技术标签:
【中文标题】使用 jQuery 在特定时间间隔显示和隐藏 div【英文标题】:Show and hide divs at a specific time interval using jQuery 【发布时间】:2010-10-29 05:37:38 【问题描述】:我想以特定间隔(10 秒)显示 div 并显示下一个 div,然后继续重复相同的操作。
**
顺序:
** 在第 10 秒 显示 div1 ,隐藏其他 div , 5秒间隔后 显示 div 2 并隐藏其他 div, 5秒间隔后 显示 div 3 并隐藏其他 div, 每 10 秒重复一次。
代码如下:
<div id='div1' style="display:none;">
<!-- content -->
</div>
<div id='div2' style="display:none;">
<!-- content -->
</div>
<div id='div3' style="display:none;">
<!-- content -->
</div>
【问题讨论】:
【参考方案1】:Working Example 在此处 - 添加 /edit 到 URL 以使用代码
你只需要使用 javascript setInterval
函数
$('html').addClass('js');
$(function()
var timer = setInterval(showDiv, 5000);
var counter = 0;
function showDiv()
if (counter == 0)
counter++;
return;
$('div', '#container')
.stop()
.hide()
.filter(function()
return this.id.match('div' + counter);
)
.show('fast');
counter == 3 ? counter = 0 : counter++;
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
body
background-color: #fff;
font: 16px Helvetica, Arial;
color: #000;
.display
width: 300px;
height: 200px;
border: 2px solid #000;
.js .display
display: none;
</style>
</head>
<body>
<h2>Example of using setInterval to trigger display of Div</h2>
<p>The first div will display after 10 seconds...</p>
<div id='container'>
<div id='div1' class='display' style="background-color: red;">
div1
</div>
<div id='div2' class='display' style="background-color: green;">
div2
</div>
<div id='div3' class='display' style="background-color: blue;">
div3
</div>
<div>
</body>
</html>
编辑:
响应您对容器 div 的评论,只需修改此内容
$('div','#container')
到这里
$('#div1, #div2, #div3')
【讨论】:
Russ 感谢您对帖子的快速回复。在您的示例中,它显示我们需要有一个 div 容器,并且我们需要有其他 div .. 但是我的 div 不在容器内部,它是单独的。如何相应地修改代码? 您有权修改 HTML 吗?如果是这样,我建议将 div 包装在容器 div 中以方便选择。如果没有容器 div,则需要修改代码以仅选择那些有问题的 div,即 id 为 1、2 和 3 的 div。我现在将更新我的答案 是有道理的,我可以将它放在容器 div 中以获得更好的清晰度。 Russ 告诉我,我们可以在显示 div1 时显示另一个 div(命名为:div_sub1),然后再显示相同的代码吗? 当然。有很多方法可以解决这种情况,您可以使用 id 上的属性匹配来同时显示 div_sub1 和 div1,您可以将其链接到 div1 的可见性,以列举几个解决方案。 嗨。我无法理解,我可以将初始时间更改为 10 秒吗?我有同样的情况,但我需要在开始时显示 1 个 Div【参考方案2】:这是对这个问题的另一种看法,使用递归而不使用可变变量。此外,我没有使用setInterval
,因此无需进行清理。
拥有这个 HTML
<section id="testimonials">
<h2>My testimonial spinner</h2>
<div class="testimonial">
<p>First content</p>
</div>
<div class="testimonial">
<p>Second content</p>
</div>
<div class="testimonial">
<p>Third content</p>
</div>
</section>
使用 ES2016
在这里递归调用函数并更新参数。
const testimonials = $('#testimonials')
.children()
.filter('div.testimonial');
const showTestimonial = index =>
testimonials.hide();
$(testimonials[index]).fadeIn();
return index === testimonials.length
? showTestimonial(0)
: setTimeout(() => showTestimonial(index + 1); , 10000);
showTestimonial(0); // id of the first element you want to show.
【讨论】:
【参考方案3】:试试这个
$('document').ready(function()
window.setTimeout('test()',time in milliseconds);
);
function test()
$('#divid').hide();
【讨论】:
【参考方案4】:见InnerFade。
<script type="text/javascript">
$(document).ready(
function()
$('#portfolio').innerfade(
speed: 'slow',
timeout: 10000,
type: 'sequence',
containerheight: '220px'
);
);
</script>
<ul id="portfolio">
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/kreation/good_guy__bad_guy.html">
<img src="images/ggbg.gif" />
</a>
</li>
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/kreation/whizzkids.html">
<img src="images/whizzkids.gif" />
</a>
</li>
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/printdesign/koenigin_mutter.html">
<img src="images/km.jpg" />
</a>
</li>
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/webdesign/rt_reprotechnik_-_hybride_archivierung.html">
<img src="images/rt_arch.jpg" />
</a>
</li>
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/kommunikation/tuev_sued_gruppe.html">
<img src="images/tuev.jpg" />
</a>
</li>
</ul>
【讨论】:
【参考方案5】:这是我想出的一个 jQuery 插件:
$.fn.cycle = function(timeout)
var $all_elem = $(this)
show_cycle_elem = function(index)
if(index == $all_elem.length) return; //you can make it start-over, if you want
$all_elem.hide().eq(index).fadeIn()
setTimeout(function()show_cycle_elem(++index), timeout);
show_cycle_elem(0);
你需要为你想要循环的所有 div 设置一个通用的类名,像这样使用它:
$("div.cycleme").cycle(5000)
【讨论】:
【参考方案6】:每 10 秒循环一次 div。
$(function ()
var counter = 0,
divs = $('#div1, #div2, #div3');
function showDiv ()
divs.hide() // hide all divs
.filter(function (index) return index == counter % 3; ) // figure out correct div to show
.show('fast'); // and show it
counter++;
; // function to loop through divs and show correct div
showDiv(); // show first div
setInterval(function ()
showDiv(); // show next div
, 10 * 1000); // do this every 10 seconds
);
【讨论】:
有没有办法将布局更改为,显示 div1 然后显示 div2 并同时显示 div1。那么当 div2 出现时,它会显示 div1 和 div2?以上是关于使用 jQuery 在特定时间间隔显示和隐藏 div的主要内容,如果未能解决你的问题,请参考以下文章