Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果用户在隐藏按钮之前单击“下一步”,jQuery滑块将中断_Jquery - Fatal编程技术网

如果用户在隐藏按钮之前单击“下一步”,jQuery滑块将中断

如果用户在隐藏按钮之前单击“下一步”,jQuery滑块将中断,jquery,Jquery,在开始之前,我很清楚jQuery可以使用的所有不同的幻灯片放映插件,但出于各种原因,我选择自己创建一个自定义版本。因此,请不要链接到插件等,因为我以前都见过这些插件,不希望使用它们 以下幻灯片演示>> 除了用户点击下一个按钮太快,并且在幻灯片中到达最后一个div时,他们可以在下一个按钮消失之前调用下一个div(该div不存在) 有没有办法解决这个问题?我不确定确切的问题是什么,但我猜问题与我在尝试加载下一个div之前没有检查下一个div是否存在有关。。。有人有什么建议吗?解决此问题的改进思路 我

在开始之前,我很清楚jQuery可以使用的所有不同的幻灯片放映插件,但出于各种原因,我选择自己创建一个自定义版本。因此,请不要链接到插件等,因为我以前都见过这些插件,不希望使用它们

以下幻灯片演示>>

除了用户点击下一个按钮太快,并且在幻灯片中到达最后一个div时,他们可以在下一个按钮消失之前调用下一个div(该div不存在)

有没有办法解决这个问题?我不确定确切的问题是什么,但我猜问题与我在尝试加载下一个div之前没有检查下一个div是否存在有关。。。有人有什么建议吗?解决此问题的改进思路

我尝试过使用if语句检查next的长度是否大于零,但这也没有解决问题


感谢您的动画正在排队,您可以使用jQuery的方法停止当前正在运行的动画

编辑::

看起来您的下一个按钮是根据上一张幻灯片的可视性隐藏的,请在幻灯片动画之前,在单击按钮时尝试隐藏按钮,方法是检查是否有下一张幻灯片。

也许checkButtons()调用应该是$('li.next a')中的第一件事。单击(函数(){})

编辑

好的,我成功了:


我通过检查下一个元素的长度并返回false修复了此问题,因此用户无法加载不存在的div

e、 g


你确定这就是问题所在吗?也许你可以更新我的小提琴来演示修复方法,因为我不确定动画是从哪里开始的,就像它正在做的那样。对此也表示欢迎,但如果用户足够快地单击“下一步”按钮,则仍会中断。好吧。也许您可以尝试将参数(例如currentSlide)传递给checkButtons函数,如果您还有一个(例如SlideCount)变量,则可以基于比较这些变量而不是is(“:visible”)来生成ifscallsAny很可能你可以用一个例子来编辑小提琴,因为我恐怕不知道你的意思。如果我足够快地点击“下一步”按钮,我仍然可以打破它!好的,请查看:
$('li.next a').click(function () {
    checkButtons();

    //rest of the code
});
var dot = $(this);

var target = $(dot).attr('href'); //use dot without the $ wrapper
var target = dot.attr('href');    //dot already cached
if (!next.length) {
                        return false;
                    } else {
                        // Fade out the currently shown slide and fade in the next slide upon fadeout
                        shown.fadeOut('fast', function () {
                            next.fadeIn('fast', function () { checkButtons(); });
                        });
                    }