簡體   English   中英

使用jQuery遍歷元素

[英]Cycling through elements with jQuery

我有一個小腳本可以前后循環瀏覽某些項目。 這是顯示相同問題的簡化筆: http : //codepen.io/2kp/pen/sLoEb

$(document).ready(function(){

  var totalslides = $('p').length;
  var currentslide;
  var newslide;

  $('.left').on('click', function() {
    currentslide = $('p.active').index()+1;
    if (currentslide == 1){
      newslide = totalslides;
    }
    else {
      newslide = currentslide-1;
    }
    $('p.active').removeClass('active');
    $('p:nth-child('+newslide+')').addClass('active');
  });

  $('.right').on('click', function() {
    currentslide = $('.slide.active').index()+1;
    if (currentslide == totalslides){
      newslide = 1;
    }
    else {
      newslide = currentslide+1;
    }
    $('p.active').removeClass('active');
    $('p:nth-child('+newslide+')').addClass('active');
  });

});

左按鈕可以正常工作,但右按鈕有時可以工作。 在實際網站上,除了iPad之外,所有其他功能都可以使用向左和向右按鈕。 iPhone,Android和台式機都可以。

真的很奇怪。 非常感謝任何幫助。

使用.eq()代替:nth-child 同樣,我們可以通過使用模量(來自此SO Answer的想法)來減少對if塊的需要:

 $(function() { var $slides = $('p.slide'); function transition(step) { var $activeSlide = $('p.slide.active').removeClass('active'); var nextIndex = ($slides.index($activeSlide) + step) % $slides.length; $slides.eq(nextIndex).addClass('active'); } $('.left').on('click', $.proxy(transition, null, -1)); $('.right').on('click', $.proxy(transition, null, 1)); })(); 
 button { font-size: 32px; } .slide { display: none; } .slide.active { display: block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="left">&#9756;</button> <button class="right">&#9758;</button> <div class="slides"> <p class="slide active">1: Lorem ipsum dolor sit amet, consectetur adipisicing elit. A alias neque necessitatibus, deleniti natus est dolores aut earum maiores ullam quas quis mollitia nemo, tenetur magni. Veniam in porro perspiciatis.</p> <p class="slide">2: Itaque impedit ratione, eveniet, quisquam voluptate perferendis eum accusantium! Quia mollitia dolor a nulla, tenetur nesciunt ex tempore officia autem modi sit molestiae veniam voluptates vero itaque beatae similique quidem.</p> <p class="slide">3: Est libero consequuntur ipsum distinctio corporis doloremque sunt iure autem tenetur labore at voluptate quam, repudiandae alias asperiores unde iste. Perspiciatis laborum, culpa sit maxime nostrum consequuntur labore reprehenderit adipisci.</p> <p class="slide">4: Error eveniet, modi a sunt animi quos accusamus ullam quibusdam earum doloribus, omnis dicta ut. Facilis laboriosam autem libero itaque accusantium explicabo blanditiis veritatis sint nesciunt obcaecati, deleniti! Alias, impedit?</p> <p class="slide">5: Modi neque harum vero minima nemo, dolor dolorum veritatis fuga obcaecati vitae! Quo commodi temporibus obcaecati rem repudiandae vel assumenda nostrum alias. Debitis non esse culpa officiis eum exercitationem distinctio!</p> </div> 

我不知道為什么。 可能與我腳本的其他部分存在某種沖突,但是用eq()替換nth-child()並調整數學可以解決iPad上的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM