setTimeout 控件
setTimeout controls
我是 jquery 的新人,我想知道制作类似于幻灯片的最佳方法是什么,它会在一段时间后自行更改图片和图片按钮状态。直到有人单击任何图像按钮,然后自动图像更改才会停止(如果用户在一段时间内不按任何按钮,一段时间后它可能会继续)。
$(document).ready(function () {
function pradinis() {
setTimeout(doSomething, 4500);
setTimeout(doSomethingElse, 1500);
setTimeout(doSomethingUsefulThisTime, 3000);
}
function kartojas() {
setTimeout(doSomething, 4500);
setTimeout(doSomethingElse, 1500);
setTimeout(doSomethingUsefulThisTime, 3000);
}
var refreshIntervalId = setInterval(kartojas, 5000);
pradinis();
$('.item1,.item2,.item3').mouseenter(function () {
clearInterval(refreshIntervalId);
});
$('.item1').click(function () {
$(".char1").fadeIn("slow");
$("char1").addClass('active');
$(".char3,.char2").fadeOut("slow");
$(".item1").addClass('active');
$(".item2,.item3").removeClass('active');
});
function doSomething() {
$('.item1').trigger('click');
};
function doSomethingElse() {
$('.item2').trigger('click');
};
function doSomethingUsefulThisTime() {
$('.item3').trigger('click');
};
$('.item2').click(function () {
$(".char1,.char3").fadeOut("slow");
$(".char2").fadeIn("slow");
$(".item2").addClass('active');
$(".item1,.item3").removeClass('active');
});
$('.item3').click(function () {
$(".char2,.char1").fadeOut("slow");
$(".char3").fadeIn("slow");
$(".item3").addClass('active');
$(".item1,.item2").removeClass('active');
});
});
到目前为止,我设法创建了这个 https://jsfiddle.net/nq0s16q3/11/,但很明显这不是最好的方法。也许有人对此有建议?非常感谢,提前谢谢。
您可以将 setTimeout
函数分配给一个变量,并在单击图像按钮时将其分配给 null。然后 运行 一个 setInterval
函数再次启动 setTimeout
函数。
var slideShow = setTimeout(slideFunction, 3000);
//on user click image
slideShow = null;
类似的东西
您需要使用 setInterval
以便它不断循环您的卷轴,直到它被清除。我使用了一个函数,该函数获取活动项目的 class 并从中获取其编号。指定项目的最大数量,它会自动循环它们。这也将使它如此,如果您添加或删除一个项目,您不必更改顶部 numItems
变量以外的任何代码。
https://jsfiddle.net/nq0s16q3/15/
这是javascript:
var numItems = 3;
var intervalSpeed = 1500;
alternate = function() {
var activeItem = $('.active');
$('.item1,.item2,.item3').removeClass('active');
fadeOutIn(activeItem.attr('class'));
}
fadeOutIn = function(itemClass) {
var itemNum = parseInt(itemClass.replace('item', ''));
var nextItemNum = itemNum + 1;
if(nextItemNum > numItems) {
nextItemNum = 1;
}
$('.char' + itemNum).fadeOut('slow');
$('.char' + nextItemNum).fadeIn('slow');
$('.item' + nextItemNum).addClass('active');
}
$(document).ready(function () {
alternateTimeout = setInterval(alternate, intervalSpeed);
$('.item1,.item2,.item3').click(function() {
clearInterval(alternateTimeout);
var activeItem = $('.active');
$('.item1,.item2,.item3').removeClass('active');
$('.' + activeItem.attr('class').replace('item', 'char')).fadeOut('slow');
$('.' + $(this).attr('class').replace('item', 'char')).fadeIn('slow');
$(this).addClass('active');
});
});
我是 jquery 的新人,我想知道制作类似于幻灯片的最佳方法是什么,它会在一段时间后自行更改图片和图片按钮状态。直到有人单击任何图像按钮,然后自动图像更改才会停止(如果用户在一段时间内不按任何按钮,一段时间后它可能会继续)。
$(document).ready(function () {
function pradinis() {
setTimeout(doSomething, 4500);
setTimeout(doSomethingElse, 1500);
setTimeout(doSomethingUsefulThisTime, 3000);
}
function kartojas() {
setTimeout(doSomething, 4500);
setTimeout(doSomethingElse, 1500);
setTimeout(doSomethingUsefulThisTime, 3000);
}
var refreshIntervalId = setInterval(kartojas, 5000);
pradinis();
$('.item1,.item2,.item3').mouseenter(function () {
clearInterval(refreshIntervalId);
});
$('.item1').click(function () {
$(".char1").fadeIn("slow");
$("char1").addClass('active');
$(".char3,.char2").fadeOut("slow");
$(".item1").addClass('active');
$(".item2,.item3").removeClass('active');
});
function doSomething() {
$('.item1').trigger('click');
};
function doSomethingElse() {
$('.item2').trigger('click');
};
function doSomethingUsefulThisTime() {
$('.item3').trigger('click');
};
$('.item2').click(function () {
$(".char1,.char3").fadeOut("slow");
$(".char2").fadeIn("slow");
$(".item2").addClass('active');
$(".item1,.item3").removeClass('active');
});
$('.item3').click(function () {
$(".char2,.char1").fadeOut("slow");
$(".char3").fadeIn("slow");
$(".item3").addClass('active');
$(".item1,.item2").removeClass('active');
});
});
到目前为止,我设法创建了这个 https://jsfiddle.net/nq0s16q3/11/,但很明显这不是最好的方法。也许有人对此有建议?非常感谢,提前谢谢。
您可以将 setTimeout
函数分配给一个变量,并在单击图像按钮时将其分配给 null。然后 运行 一个 setInterval
函数再次启动 setTimeout
函数。
var slideShow = setTimeout(slideFunction, 3000);
//on user click image
slideShow = null;
类似的东西
您需要使用 setInterval
以便它不断循环您的卷轴,直到它被清除。我使用了一个函数,该函数获取活动项目的 class 并从中获取其编号。指定项目的最大数量,它会自动循环它们。这也将使它如此,如果您添加或删除一个项目,您不必更改顶部 numItems
变量以外的任何代码。
https://jsfiddle.net/nq0s16q3/15/
这是javascript:
var numItems = 3;
var intervalSpeed = 1500;
alternate = function() {
var activeItem = $('.active');
$('.item1,.item2,.item3').removeClass('active');
fadeOutIn(activeItem.attr('class'));
}
fadeOutIn = function(itemClass) {
var itemNum = parseInt(itemClass.replace('item', ''));
var nextItemNum = itemNum + 1;
if(nextItemNum > numItems) {
nextItemNum = 1;
}
$('.char' + itemNum).fadeOut('slow');
$('.char' + nextItemNum).fadeIn('slow');
$('.item' + nextItemNum).addClass('active');
}
$(document).ready(function () {
alternateTimeout = setInterval(alternate, intervalSpeed);
$('.item1,.item2,.item3').click(function() {
clearInterval(alternateTimeout);
var activeItem = $('.active');
$('.item1,.item2,.item3').removeClass('active');
$('.' + activeItem.attr('class').replace('item', 'char')).fadeOut('slow');
$('.' + $(this).attr('class').replace('item', 'char')).fadeIn('slow');
$(this).addClass('active');
});
});