Javascript 停止js幻灯片放映缓存点击量

Javascript 停止js幻灯片放映缓存点击量,javascript,jquery,Javascript,Jquery,有人知道如何阻止此幻灯片“缓存”通过幻灯片的点击量吗?如果我点击箭头10次,那么将有10张幻灯片通过。有没有办法停止?或者,如果您单击相反的箭头以取消另一个箭头的“缓存”单击 谢谢 无论何时单击箭头,都可以将标志设置为true,例如isPending。然后在单击箭头时检查此项,如果为真,则忽略单击。然后,当动画完成时,将标志设置回false。使用该函数可能会执行您正在查找的操作。将代码调整为以下值: $(document).ready(function(){ // The "one()

有人知道如何阻止此幻灯片“缓存”通过幻灯片的点击量吗?如果我点击箭头10次,那么将有10张幻灯片通过。有没有办法停止?或者,如果您单击相反的箭头以取消另一个箭头的“缓存”单击


谢谢

无论何时单击箭头,都可以将标志设置为true,例如
isPending
。然后在单击箭头时检查此项,如果为真,则忽略单击。然后,当动画完成时,将标志设置回false。

使用该函数可能会执行您正在查找的操作。将代码调整为以下值:

$(document).ready(function(){
    // The "one()" function means that this action is disconnected
    // from the element once the action occurs. In other words, click
    // it twice, and the second one does nothing.
    $("#slideshow-previous").one("click", showPreviousSlide);
    $("#slideshow-next").one("click", showNextSlide);
    ...
});
然而,仅仅这样做是不够的。动画完成后,我们必须再次连接事件处理程序。对animate()使用回调函数:


正如评论中指出的,这存在将showPreviousSlide和showNextSlide多次附加到未按下的按钮上的问题。您可以通过多做一点工作来解决这一问题:

function showPreviousSlide()
{
    currentSlide--;
    updateContentHolder($(this).attr("id"), showPreviousSlide);
    updateButtons();
}

function showNextSlide()
{
    currentSlide++;
    updateContentHolder($(this).attr("id"), showNextSlide);
    updateButtons();
}

...

function updateContentHolder(id, callback)
{
    ...
    $("#slideshow-scroller").animate({scrollLeft: scrollAmount}, 1000, function() {
        $("#" + id).one("click", callback);
    });
}

这会双重绑定你没有点击的那一个吗?既然你在两个网站上都调用了
one
,但只单击了一个之后又在两个网站上调用了它?太棒了-这正是我所需要的-这个网站及其成员太棒了-非常感谢所有的帮助!谢谢更新你的帖子,我注意到了你提到的问题,它导致幻灯片在反转方向时跳过了相关的点击量。我尝试了更新的答案,但它完全停止了滑块。现在我意外地找到了一个解决方案,因为我是一个完全的新手,我不知道为什么它会有帮助——我添加了stopReverseSlide();在“函数showNextSlide()”和“函数showPreviousSlide()”的引导下,实际上没有链接到任何函数!,所以我不知道为什么会这样?有人想解释一下为什么我被否决了吗?在我看来,这很合乎逻辑。我很想知道它到底出了什么问题。如果OP只使用纯JS,这是个不错的答案。可能是-1,因为使用jQuery已经有了更好的解决方法。我将投票去掉-1。仅仅因为它不是最好的解决方案并不意味着它是一个坏的解决方案。
function showPreviousSlide()
{
    currentSlide--;
    updateContentHolder($(this).attr("id"), showPreviousSlide);
    updateButtons();
}

function showNextSlide()
{
    currentSlide++;
    updateContentHolder($(this).attr("id"), showNextSlide);
    updateButtons();
}

...

function updateContentHolder(id, callback)
{
    ...
    $("#slideshow-scroller").animate({scrollLeft: scrollAmount}, 1000, function() {
        $("#" + id).one("click", callback);
    });
}