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