首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery点击功能和超时

JQuery点击功能和超时
EN

Stack Overflow用户
提问于 2011-06-28 23:22:43
回答 2查看 1.3K关注 0票数 2

我构建这个函数是为了在画廊中滚动。图片库应该每6000ms滚动到下一张图片,但是如果用户点击一个缩略图,它应该直接转到缩略图,然后将计时器重置为6000ms。

我的代码不能正常工作,因为我不认为我的JQuery重新触发函数是正确的。我不太确定我在做什么。

代码语言:javascript
复制
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);
    });

有什么想法吗?

太棒了

顺便说一句,鼠标点击的效果很好,只是超时时间我没有弄对。

我试过了。还是一无所获。点击仍在工作,但超时功能不起作用。

代码语言:javascript
复制
$('.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()函数,它会重新激活这个点击函数,但是它没有。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-28 23:37:22

您正在向click()方法传递两个函数,这是不受支持的。此外,看起来您需要的是setInterval()而不是setTimeout(),而且当计时器滴答作响时,您不会将cornerimgfocus类添加到下一张幻灯片中。尝试:

代码语言:javascript
复制
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.
票数 3
EN

Stack Overflow用户

发布于 2011-06-28 23:28:09

似乎您尝试选择一个元素两次:

代码语言:javascript
复制
var islide = $('.cornerimgfocus');
$(islide).removeClass('cornerimgfocus');

在第二行,您可以使用:

代码语言:javascript
复制
islide.removeClass('cornerimgfocus');

不知道这是不是引起了你的问题,

最大值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6508887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档