Jquery 单击并单击。下一步()-更好的方法?

Jquery 单击并单击。下一步()-更好的方法?,jquery,Jquery,示例- 因此,我使用以下代码构建了一个简单的滑块: activeSlide.removeClass("active") .next().addClass("active") if (activeSlide.next().length === 0) { firstSlide.addClass("active"); } 一切都很好。我想我可以使用类似的东西来创建前进和后退按钮: control.on('click', 'a.next', function() { acti

示例-

因此,我使用以下代码构建了一个简单的滑块:

activeSlide.removeClass("active")
    .next().addClass("active")

if (activeSlide.next().length === 0) {
    firstSlide.addClass("active");
}
一切都很好。我想我可以使用类似的东西来创建前进和后退按钮:

control.on('click', 'a.next', function() {
    activeSlide = activeSlide
        .next().removeClass("active")
        .next().addClass("active");
});
它在中间的幻灯片上运行正常(有点慢?),但在第一张或最后一张幻灯片上似乎不会触发


如果有人对更好的方法有建议,或者对如何调整上述代码有想法,我们将不胜感激。

您的代码有三个问题:

  • 事件处理程序(问题中的第二个块)的设置位于计时器调用的函数内部(仅在JSFIDLE上看到)。将其移到外部,否则将设置多个事件处理程序
  • 在第二个代码块的第四行,您正在调用
    next()
    ,这意味着您正在从下一个块而不是活动块中删除
    active
  • activeSlide
    变量将被事件处理程序函数的关闭所捕获,并且在按下按钮时可能不会指向当前活动的幻灯片。使用事件处理程序中的
    $('.slide.active')
    重新初始化
    activeSlide
  • control.on('click', 'a.next', function() {
        $('.slide.active')
            removeClass("active")
            .next().addClass("active");
    });