我构建这个函数是为了在画廊中滚动。图片库应该每6000ms滚动到下一张图片,但是如果用户点击一个缩略图,它应该直接转到缩略图,然后将计时器重置为6000ms。
我的代码不能正常工作,因为我不认为我的JQuery重新触发函数是正确的。我不太确定我在做什么。
var timerp = null;
$('.thumbs').click(function() {
clearTimeout(timerp);
$('.cornerimgfocus').removeClass('cornerimgfocus');
$('#P' + $(this).attr('id')).addClass('cornerimgfocus');
}, function gallery() {
clearTimeout(timerp);
timerp = setTimeout(function() {
var islide = $('.cornerimgfocus');
$(islide).removeClass('cornerimgfocus');
if(islide[0]==$('.cornerimg:last')[0]) {
var nextslide = $('.cornerimg').first();
}
else {
var nextslide = $(islide).next();
}
gallery();
}, 6000);
});有什么想法吗?
太棒了
顺便说一句,鼠标点击的效果很好,只是超时时间我没有弄对。
我试过了。还是一无所获。点击仍在工作,但超时功能不起作用。
$('.thumbs').click(function() {
clearTimeout(timerp);
$('.cornerimgfocus').removeClass('cornerimgfocus');
$('#P' + $(this).attr('id')).addClass('cornerimgfocus');
timerp = setTimeout(function() {
$('#' + $(this).attr('id')).next().click()
}, 3000)
});我以为如果我添加了.next().click()函数,它会重新激活这个点击函数,但是它没有。
发布于 2011-06-28 23:37:22
您正在向click()方法传递两个函数,这是不受支持的。此外,看起来您需要的是setInterval()而不是setTimeout(),而且当计时器滴答作响时,您不会将cornerimgfocus类添加到下一张幻灯片中。尝试:
var timerp = null;
$('.thumbs').click(function() {
if (timerp) {
window.clearInterval(timerp);
}
$('.cornerimgfocus').removeClass('cornerimgfocus');
$('#P' + $(this).attr('id')).addClass('cornerimgfocus');
gallery();
});
function gallery()
{
timerp = window.setInterval(function() {
var islide = $('.cornerimgfocus');
islide.removeClass('cornerimgfocus');
var nextSlide;
if (islide[0] == $('.cornerimg:last')[0]) {
nextslide = $('.cornerimg').first();
} else {
nextslide = islide.next();
}
nextSlide.addClass('cornerimgfocus');
}, 6000);
}
gallery(); // Start the animation.发布于 2011-06-28 23:28:09
似乎您尝试选择一个元素两次:
var islide = $('.cornerimgfocus');
$(islide).removeClass('cornerimgfocus');在第二行,您可以使用:
islide.removeClass('cornerimgfocus');不知道这是不是引起了你的问题,
最大值
https://stackoverflow.com/questions/6508887
复制相似问题