即使它是一个全局函数,也无法清除变量的时间? JQuery响应滑块

时间:2014-12-01 20:09:56

标签: javascript jquery

我创建了一个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

一旦设置了超时,选择器就不起作用了,但之前就是这样。

2 个答案:

答案 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);