Javascript / jQuery Можно ли вырваться из функции через другую функцию? - PullRequest
2 голосов
/ 28 января 2011

Я делаю сценарий, который вращает li в данном ul.Я хотел бы знать, возможно ли прервать рекурсию, которая у меня есть, когда один из пользователей находится под навесом.В идеале я бы создал логическое значение, должна ли рекурсия продолжаться или нет, так как я хотел бы, чтобы это было нарушено, когда в будущем будет вставлено видео.Я только начал, так что это в основном то, что у меня есть.

HTML:

    <script type="text/javascript">
 $(document).ready(function(){
  $("#ulRotator").rotate();
 });
    </script>
    </head>
    <body>
 <ul id="ulRotator" style="width:500px; height:500px;">
     <li style="background-color:red;"></li>
        <li style="background-color:blue;"></li>
        <li style="background-color:black;"></li>
        <li style="background-color:green;"></li>
        <li style="background-color:grey;"></li>
    </ul>

</body>

Javascript:

    (function( $ ){

 var rotator;
 var rotatorLi;

 $.fn.rotate = function() {
  rotator = this;
  rotatorLi = rotator.children('li');

  rotatorLi.css('width',rotator.css('width')).css('height',rotator.css('height'));
  rotator.addClass('rotator');
  $(rotatorLi[0]).addClass('current');

  moveSlides('right');
 };


 moveSlides = function(direction){
  var current = $(rotator).find('li.current');  
  var currentPosition = $(rotatorLi).index(current);
  var slideCount = $(rotatorLi).length - 1;

  var next;
  if (direction == 'right'){
   if(currentPosition == slideCount){
    next = rotatorLi[0];
   }else{    
    next = rotatorLi[currentPosition+1];
   }
  }
  else if (direction == 'left'){
   if(currentPosition == 0){
    next = rotatorLi[slideCount];
   }else{    
    next = rotatorLi[currentPosition-1];
   } 
  }

  $(current).delay(6000).fadeOut(500,function(){
   $(current).removeClass('current');
   $(next).addClass('current');
   $(next).css('display','block');
   moveSlides(direction);
  });
 };
    })( jQuery );

CSS

    .rotator li
    {
 position:absolute;
 z-index:0;
 display::block !important;
 list-style-type:none;
    }
    li.current
    { 
 z-index:1 !important;
    }

Также обратите внимание, что я считаю себя огромным новичком, когда дело доходит до Javascript, я мог бы обходить это очень идиотским способом без моего ведома, любые указатели были бы оценены.Приветствия.

1 Ответ

1 голос
/ 28 января 2011

Я установлю переменную типа abort в значение true, используя открытую функцию при наведении курсора, и проверю ее в первой строке moveSlides.Если для него установлено значение true, просто return выходит из функции.

...