Галерея изображений не работает как "slideSwitch не определен" :-( - PullRequest
0 голосов
/ 09 ноября 2010

Я только начинаю изучать Jquery, и, к разочарованию, сделал несколько учебных пособий, этот - один из самых основных, которые я сделал, и я не могу заставить его работать.

Это учебник, которому я следую: - http://jonraasch.com/blog/a-simple-jquery-slideshow

Когда я запускаю страницу и запускаю отладку в Chrome и firebug в firefox, я получаю сообщение об ошибке: - " Uncaught ReferenceError: слайд-переключатель не определен "

Это мой код: -

$(document).ready(function(){
   function slideSwitch(){
       var $active = $('#slideshow IMG.active');
       var $next = $active.next();

       $active.addClass('last-active');

       $next.css({opacity: 0.0})
         .addClass('active')
         .animate({opacity:1.0}, 1000, function() {
              $active.removeClass('active last-active');
         });
  }
  $(function (){
      setInterval( "slideSwitch()", 5000 );
  });
});

Насколько я могу судить, я правильно определил функцию slideSwitch, и никто другой в поле для комментариев не сталкивался с этой проблемой. Я уверен, что это что-то действительно простое, я делаю неправильно.

1 Ответ

2 голосов
/ 09 ноября 2010

Ваша функция slideSwitch не определена в глобальной области видимости (только внутри этого .ready() хэдлера), и когда вы передаете строку в setInterval(), где она ищет, вместо этого сделайте это :

$(function(){
   function slideSwitch(){
       var $active = $('#slideshow IMG.active');
       var $next = $active.next();

       $active.addClass('last-active');

       $next.css({opacity: 0.0})
         .addClass('active')
         .animate({opacity:1.0}, 1000, function() {
              $active.removeClass('active last-active');
         });
  }
  setInterval(slideSwitch, 5000 );
});

Для записи, это все еще будет работать (где у вас есть, так как это находится в родительской области):

$(function (){
  setInterval(slideSwitch, 5000);
});

Но ... вы уже находитесь в обработчике document.ready, поэтому здесь не требуется обёртка.

...