我正在努力使用我的第一个jQuery脚本。我在我的页面上有一个DIV,它被设置为通过CSS隐藏。然后,我运行这个脚本,让它淡入、淡出,然后再淡入:
<script type="text/javascript">
(function($) {
$(function() {
$('#abovelogo').fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
});
})(jQuery);
</script>这部分运行得很好。现在,我的问题是:
我如何改变它,使这个脚本运行循环(永远),而不是只运行一次?
提前感谢!-Nate
发布于 2012-02-17 05:49:07
将您的代码放在setInterval中
$(function () {
setInterval(function () {
$('#abovelogo').fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
}, 5000);
});因为只要页面是活动的,你就会运行它,所以你应该尽你所能来优化你的代码,例如,你可以在间隔之外缓存选择:
$(function () {
var $element = $('#abovelogo');
setInterval(function () {
$element.fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
}, 5000);
});setInterval文档:https://developer.mozilla.org/en/window.setInterval
此外,您可以在每个动画中使用回调函数来逐个调用动画,而不是使用.delay():
$(function () {
var $element = $('#abovelogo');
setInterval(function () {
$element.fadeIn(1000, function () {
$element.fadeOut(1500, function () {
$element.fadeIn(1500)
});
});
}, 5000);
});这是一个演示:http://jsfiddle.net/xsATz/
您还可以使用setTimeout并递归调用函数:
$(function () {
var $element = $('#abovelogo');
function fadeInOut () {
$element.fadeIn(1000, function () {
$element.fadeOut(1500, function () {
$element.fadeIn(1500, function () {
setTimeout(fadeInOut, 500);
});
});
});
}
fadeInOut();
});这是一个演示:http://jsfiddle.net/xsATz/1/
发布于 2012-02-17 07:25:03
<script type="text/javascript">
function doFade() {
$('.foo').toggleClass('fooAct');
setTimeout(doFade, 1000);
}
$(document).ready(function(){
doFade();
});
</script>
<style>
div {
height:200px;
background:black;
}
.foo {
transition: opacity 2s;
-moz-transition: opacity 2s; /* Firefox 4 */
-webkit-transition: opacity 2s; /* Safari and Chrome */
-o-transition: opacity 2s; /* Opera */
opacity:0.1;
}
.fooAct {
opacity:1;
}
</style>
<div class="foo"></div>只是想象力。你可以用css3做到这一点。我希望这也能帮助你。做这样的事情,css应该比jQuery更适合浏览器性能。
发布于 2013-02-20 03:28:12
我对setTimeout方法有一些问题。也许用“trigger”更好:
var $element = $('.banner');
$element.bind('cusfadeOut',function() {
$(this).fadeOut(500,function() {
$(this).trigger('cusfadeIn');
});
});
$element.bind('cusfadeIn',function() {
$(this).fadeIn(1000, function() {
$(this).trigger('cusfadeOut');
});
});
$element.trigger('cusfadeOut');https://stackoverflow.com/questions/9319573
复制相似问题