我创建了一个JQuery滑块,但由于超时没有清除,幻灯片选择无效。
这是一个全局函数,但在运行函数时需要清除它。
$('.selector').click(function(){
var $slideID = $(this).attr('id'); // what slide to go to
var $currentSlideID = $('.slider li').attr('id'); //what slide is visible
var goTo = $slideID - $currentSlideID;
clearTimeout(timer); //clear timer
$('.slider ul').animate({'right' : goTo + '00%'},500);
});
将所有内容放在此页面中的时间太长,所以我喜欢在JSBin中使用它:
http://jsbin.com/tuyega/7/edit?js,output#J:L28
一旦设置了超时,选择器就不起作用了,但之前就是这样。
答案 0 :(得分:3)
setTimeout赋值前面的var
创建一个仅存在于$(document).ready回调范围内的变量。删除var关键字现在将setTimeout返回值分配给全局timer
变量,该变量暴露给slideNext()和slidePrev()。
答案 1 :(得分:2)
您没有设置全局变量。是的,您定义了一个,您还在文档的范围内定义了一个。所以删掉var。
var timer; //create global var <--yep this is global
$(document).ready(function(){
//set and start slider
var timer = setTimeout(function(){slideNext();},5000); <--And not global
另一个问题是你的动画代码错了
$('.slider ul').animate({'right' : goTo + '00%'},500);
应该是
$('.slider ul').animate({'left' : -goTo + '00%'},500);