我希望幻灯片放映在鼠标悬停时暂停,然后当用户将鼠标从图像上移开时再次开始播放。我提出了临时搭建方式,但是如果你过快地将图像上下移开,就会导致图像的时间发生变化。
function theRotator() {
//Set the opacity of all images to 0
$('div.rotator ul li').css({opacity: 0.0});
//Get the first image and display it (gets set to full opacity)
$('div.rotator ul li:first').css({opacity: 1.0});
//Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
setInterval('rotate()',6000);
}
function rotate() {
//Get the first image
var current = ($('div.rotator ul li.show')? $('div.rotator ul li.show') : $('div.rotator ul li:first'));
if ( current.length == 0 ) current = $('div.rotator ul li:first');
//Get next image, when it reaches the end, rotate it back to the first image
var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div.rotator ul li:first') :current.next()) : $('div.rotator ul li:first'));
//Set the fade in effect for the next image, the show class has higher z-index
next.css({opacity: 0.0})
.addClass('show')
.animate({opacity: 1.0}, 1000);
//Hide the current image
current.animate({opacity: 0.0}, 1000)
.removeClass('show');
};
$(document).ready(function() {
//Load the slideshow
theRotator();
$('div.rotator').fadeIn(1000);
$('div.rotator ul li').fadeIn(1000); // tweek for IE
});
答案 0 :(得分:0)
您应该收听mouseenter
和mouseleave
事件,并停止并重新启动您的间隔。
假设您有一些像
这样的代码<script>
// Declare the var that will keep reference of the setInterval
intervalPlay = false;
</script>
<div id="yourSliderContainer">
// your slide content
</div>
当鼠标进入div
时,你应该停止setInterval$("#yourSliderContainer").mouseenter(function(mouseEvent) {
// Stop the setInterval if existing
if (intervalPlay != false)
{
clearInterval(intervalPlay);
intervalPlay = false;
}
});
$("#yourSliderContainer").mouseleave(function(mouseEvent) {
// Restart the setInterval
if (intervalPlay == false)
intervalPlay = setInterval('rotate()',6000);
});
注意:幻灯片的播放时间可能因为你没有停止setInterval而重新创建,所以在一段时间后你会有很多间隔运行。
请点击此处了解详情:clearInterval
答案 1 :(得分:0)
谢谢大家的帮助!以下是其他人找到此主题的代码。下面的代码暂停了mouseenter上的滑块,并且在mouseleave上没有任何问题就停止了(这里是我在编辑它之前获取代码的站点,用于启动和停止) http://www.alohatechsupport.net/webdesignmaui/maui-web-site-design/easy_jquery_auto_image_rotator.html
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery /1.3.2 /jquery.min.js"></script>
<script type="text/javascript">
var myInterval = 5000;
var intervalPlay = true;
$('div.rotator').mouseenter(function(mouseEvent) {
// Stop the setInterval if existing
if (intervalPlay != false)
{
clearInterval(myInterval);
//$(".show").stop();
intervalPlay = false;
}
});
$("div.rotator").mouseleave(function(mouseEvent) {
// Restart the setInterval
if (intervalPlay == false)
intervalPlay = true;
});
function theRotator() {
//Set the opacity of all images to 0
$('div.rotator ul li').css({opacity: 0.0});
//Get the first image and display it (gets set to full opacity)
$('div.rotator ul li:first').css({opacity: 1.0});
//Call the rotator function to run the slideshow, 10000 = change to next image after 6 seconds
setInterval('rotate()',myInterval);
}
function rotate() {
if (intervalPlay == true){
//Get the first image
var current = ($('div.rotator ul li.show')? $('div.rotator ul li.show') : $('div.rotator ul li:first'));
if ( current.length == 0 ) current = $('div.rotator ul li:first');
//Get next image, when it reaches the end, rotate it back to the first image
console.log(intervalPlay);
console.log(myInterval);
var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div.rotator ul li:first') :current.next()) : $('div.rotator ul li:first'));
//Set the fade in effect for the next image, the show class has higher z-index
next.css({opacity: 0.0})
.addClass('show')
.animate({opacity: 1.0}, 1000);
//Hide the current image
current.animate({opacity: 0.0}, 1000)
.removeClass('show');
}
};
$(document).ready(function() {
//Load the slideshow
theRotator();
$('div.rotator').fadeIn(1000);
$('div.rotator ul li').fadeIn(1000); // tweek for IE
});
</script>