функция поворота слайдера jquery - PullRequest
0 голосов
/ 20 марта 2012

Я использую небольшой плагин-слайдер, который имеет 2 основные функции rotate () и rotateSwitch ()

rotate = function(){    
    var triggerID = $active.attr("rel") - 1;
    var image_reelPosition = triggerID * imageWidth;

    $(".paging a").removeClass('active');
    $active.addClass('active');

    //Slider Animation
    $(".image_reel").animate({ 
        left: -image_reelPosition
    }, 500 );

}; 


rotateSwitch = function(){      
    play = setInterval(function(){
        $active = $('.paging a.active').next();
        if ( $active.length === 0) {
            $active = $('.paging a:first'); //go back to first
        }
        rotate(); //Trigger the paging and slider function
    }, 7000);  (7 seconds)
};

rotateSwitch();

Это хорошо работает, еслиКнопки подкачки имеют следующий вид:

<div class="paging">
  <a href="#" rel="1">1</a>
  <a href="#" rel="2">2</a>
  <a href="#" rel="3">3</a>
  <a href="#" rel="4">4</a>
</div>

Но моя проблема (для нужд стиля) состоит в том, что разбиение на страницы выполняется таким образом:

<div class="paging">
      <ul>
                <li><a href="#" rel="1">1</a></li>
                <li><a href="#" rel="2">2</a></li>
                <li><a href="#" rel="3">3</a></li>
                <li><a href="#" rel="4">4</a></li>
            </ul>
</div>

Тогда вращение не работает.Я думаю, что проблема не в том, чтобы найти ссылку ниже, потому что эта строка: (в функции rotateSwitch ())

$active = $('.paging a.active').next();
    if ( $active.length === 0) {
        $active = $('.paging a:first'); //go back to first
    }

Если это ошибка, как найти следующий () дочерний элемент списка?

1 Ответ

0 голосов
/ 21 марта 2012

Да, a.active не имеет братьев и сестер внутри li, следовательно, результат .next() отсутствует.Вам нужно будет пройти через родителя, чтобы сначала найти следующую li, а затем вернуться обратно к ссылке внутри:

$active = $('.paging a.active').parent().next().find('a');
...