2017-10-20 4 views
-4

で同じクラスの次の私は、このHTMLがある場合:私は私のcurrentクラスがどこにあるかに基づいて、次と前のslideクラスをターゲットとするにはどうすればよいjQueryのターゲット全体のDOM

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

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

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

、jQueryの/ JSとは?

+0

次の() 'あなたが最初の' section.slide'要素を得ることを期待 '.current.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

あなたは大歓迎です。 –

関連する問題