2016-08-09 55 views
0

Ich möchte einige prev/next Kalenderlösung durch Anzeigen/Verbergen von Inhalt erstellen.Jquery prev/next navigation mit show/hide Inhalt für benutzerdefinierten Kalender

<div class="months"> 
    <div class="082016">2016 august</div> 
    <div class="092016">2016 september</div> 
    <div class="102016">2016 october</div> 
</div> 

und Artikel:

<div class="items"> 
    <div id="082016"> 
     <div class="item">August item</div> 
     <div class="item">August item</div> 
     <div class="item">August item</div> 
    </div> 
    <div id="092016"> 
     <div class="item">September item</div> 
     <div class="item">September item</div> 
     <div class="item">September item</div> 
    </div> 
    <div id="102016"> 
     <div class="item">October item</div> 
     <div class="item">October item</div> 
     <div class="item">October item</div> 
    </div> 
</div> 

Was ich erreichen will ist mit einer solchen Navigation:

ich diesen Code für die Navigation haben (sollten, indem mehr Monate flexibel sein)

august calendar item

september calendar item

October calendar item

So auf den Pfeil klicken, um es diesen Monat id zeigen würde und Titel der Navigation ändern. Auch sollte ich keinen hinteren Pfeil für den ersten Monat und keinen nächsten Pfeil für den Lats-Monat haben.

Vielen Dank im Voraus für jede Hilfe!

Antwort

1

für Ihre Frage Mein Vorschlag ist ein reines jQuery Skript:

$(function() { 
 
    var cachedToDivs = $('.months div'); 
 

 
    cachedToDivs.css({'font-weight': 'bold'}); 
 
    $('.items > div:lt(' + (cachedToDivs.length - 1) + ')').hide(); 
 
    $('.months div:lt(' + (cachedToDivs.length - 1) + ')').hide(); 
 

 

 
    cachedToDivs.on('click', 'img', function (e) { 
 
    if ($(':animated').length > 0) { 
 
     return; // wait for last animation... 
 
    } 
 
    var index; 
 
    if (e.target.name == 'prev') { 
 
     index = (-1 + $(this).parent().index()) % cachedToDivs.length; 
 
     index = (index < 0) ? cachedToDivs.length - 1: index; 
 
    } else { 
 
     index = (1 + $(this).parent().index()) % cachedToDivs.length; 
 
    } 
 
    cachedToDivs.eq(index).find('img').remove(); 
 
    var txt = cachedToDivs.eq(index).text().trim(); 
 
    cachedToDivs.eq(index).html('<img name="prev" src="http://icons.iconarchive.com/icons/oxygen-icons.org/oxygen/256/Actions-go-previous-icon.png" width="20" height="15"/>&nbsp;&nbsp;&nbsp;' + txt + '&nbsp;&nbsp;&nbsp;<img name="next" src="http://icons.iconarchive.com/icons/oxygen-icons.org/oxygen/256/Actions-go-next-icon.png" width="20" height="15"/>'); 
 
    $(this).parent().hide(); 
 
    cachedToDivs.eq(index).show(); 
 
    $('.items > div:visible').slideUp('fast', function() { 
 
     $('.items #' + cachedToDivs.eq(index).attr('class')).slideDown('fast'); 
 
    }) 
 
    if(index == (cachedToDivs.length - 1)) { // on the last month remove next image 
 
     cachedToDivs.eq(index).find('img[name="next"]').remove(); 
 
    } 
 
    if(index == 0) { // on the first month remove prev image 
 
     cachedToDivs.eq(index).find('img[name="prev"]').remove(); 
 
    } 
 
    }); 
 
    cachedToDivs.eq((cachedToDivs.length - 1)).html('<img name="prev" src="http://icons.iconarchive.com/icons/oxygen-icons.org/oxygen/256/Actions-go-previous-icon.png" width="20" height="15"/>&nbsp;&nbsp;&nbsp;' + cachedToDivs.eq(2).text().trim() + '&nbsp;&nbsp;&nbsp;<img name="next" src="http://icons.iconarchive.com/icons/oxygen-icons.org/oxygen/256/Actions-go-next-icon.png" width="20" height="15"/>'); 
 
    $('.months div:visible img[name="next"]').trigger('click'); 
 
});
.months { 
 
    display: inline-block; 
 
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<div class="months"> 
 
    <div class="082016">2016 august</div> 
 
    <div class="092016">2016 september</div> 
 
    <div class="102016">2016 october</div> 
 
</div> 
 
<div class="items"> 
 
    <div id="082016"> 
 
     <div class="item">August item</div> 
 
     <div class="item">August item</div> 
 
     <div class="item">August item</div> 
 
    </div> 
 
    <div id="092016"> 
 
     <div class="item">September item</div> 
 
     <div class="item">September item</div> 
 
     <div class="item">September item</div> 
 
    </div> 
 
    <div id="102016"> 
 
     <div class="item">October item</div> 
 
     <div class="item">October item</div> 
 
     <div class="item">October item</div> 
 
    </div> 
 
</div>

+0

Arbeiten einfach perfekt! Super! Nur zwei Dinge, um es schicker zu machen. Könnten die Elemente mit Fade-Effekt angezeigt werden? Wie kann ich Bilder anstelle von> MIC

+0

Oh, und ich sehe, dass ich den Ort anklicken kann, an dem "<" steht, auch wenn es für den ersten oder letzten Monat versteckt ist. So kann ich die Navigation wiederholen. – MIC

+0

Hm es funktioniert seltsam. Die Navigation wird ausgeblendet und die Elemente nicht. Ich meine, ich wollte Gegenstände zum Ein- und Ausblenden haben. Keine Notwendigkeit für Animation für Nav. Und auch ich habe immer noch diesen Fehler mit < >, auch wenn es nicht sichtbar ist, kann ich auf diesen Bereich klicken. Siehe meinen Kommentar :) Vielen Dank für Ihre Hilfe – MIC