Javascript Can';即使变量是全局函数,也不能清除它的超时?JQuery响应滑块

Javascript Can';即使变量是全局函数,也不能清除它的超时?JQuery响应滑块,javascript,jquery,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 - $c

我已经创建了一个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中:


设置超时后,选择器将不起作用,但之前它会起作用。

您没有设置全局变量。是的,您定义了一个,您也在文档范围内定义了一个。因此,放弃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({'left' : -goTo + '00%'},500);

您没有设置全局变量。是的,您定义了一个,您也在文档范围内定义了一个。因此,放弃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({'left' : -goTo + '00%'},500);

setTimeout赋值前面的
var
创建了一个仅存在于$(document).ready回调范围内的变量。删除var关键字将把setTimeout返回值分配给全局
timer
变量,该变量暴露于slideNext()和slidePrev()。

setTimeout赋值前面的
var
创建了一个只存在于$(文档)范围内的变量。准备回调。删除var关键字将把setTimeout返回值分配给全局
timer
变量,该变量暴露于slideNext()和slidePrev()。

谢谢,这是有意义的,不幸的是,似乎仍然有问题,但我看不到,你测试过它了吗?谢谢,这是有意义的,不幸的是,似乎仍然有一个问题,但我看不到它,你测试它,它的工作?