2017-10-20 15 views
-4

同一類的。如果我有這個網站:jQuery的目標未來整個DOM

<section class="slide current"></section> 

<section> 
    <div class="slide"></div> 
    <div class="slide"></div> 
</section> 

<section class="slide"></section> 

如何定位基於這樣我current類是下一個和以前slide類,使用jQuery/JS?

+0

所以你打電話時'下一個()'從'.current.slide'你希望得到第一個'section.slide'元素 - 是這樣嗎? –

+2

搜索'.prev()'和'.next()' –

+0

@DarrenSweeney只適用於兄弟姐妹,因此我之前對OP的評論似乎也希望獲得'section'中的元素 –

回答

1

由於slide元素可以嵌套在你需要的任何級別上,當你點擊其中一些元素時循環每個幻燈片元素,然後根據循環中的當前索引找到prevnext

$('.slide').click(function() { 
 
    let all = $('.slide'); 
 
    all.removeClass('current next prev'); 
 

 
    let slides = Array.from(all); 
 
    $(this).addClass('current'); 
 

 
    slides.forEach(function(e, i) { 
 

 
    let el = $(e); 
 

 
    if (el.hasClass('current')) { 
 
     let prev, next; 
 
     if (slides[i - 1]) prev = $(slides[i - 1]); 
 
     if (slides[i + 1]) next = $(slides[i + 1]); 
 

 
     if (prev) prev.addClass('prev'); 
 
     if (next) next.addClass('next'); 
 
    } 
 
    }) 
 
})
.slide{cursor: pointer; padding: 5px;} 
 
.current {color: green;} 
 
.prev {color: blue} 
 
.next {color: red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section class="slide current">1</section> 
 
<section> 
 
    <div class="slide">2</div> 
 
    <div class="slide">3</div> 
 
    <div> 
 
    <div> 
 
     <div class="slide">4</div> 
 
    </div> 
 
    </div> 
 
</section> 
 
<section class="slide">5</section>

+0

非常感謝!就像通緝那樣工作。 – Rasmus

+0

不客氣。 –