Ich habe einen benutzerdefinierten Schieberegler mit objektorientiertem Javascript geschrieben, wie unten zu sehen. Ich habe das Modul in eine Geige hier https://jsfiddle.net/5z29xhzg/7/ aufgenommen. Nach dem Verschieben nach links oder rechts werden die Folien geklont und entsprechend angehängt, so dass der Benutzer den Schieberegler beliebig oft durchlaufen kann. Es gibt eine separate Funktion zum Steuern der aktiven Registerkarte. Bei getrennter Verwendung funktionieren die Tabs und der Slider perfekt, aber ich habe ein Problem, wenn beide zusammen verwendet werden. Klicken Sie zum Beispiel auf "blaue Schürze" und dann auf den linken Schiebeknopf (der Sie zur "dave & butters" -Scheibe bringen soll), gelangen Sie zur Glückselerrutsche. Oder klicken Sie auf die letzte Folie mit den Tabs und klicken Sie dann auf die nächste Schaltfläche zeigt nichts an. Kann jemand auf den Fehler in dem Objekt hinweisen, das ich geschrieben habe? Jede Hilfe wird sehr geschätzt!Benutzerdefinierte Schieberegler Ausgabe
GiftSlider = {
prev: '.slider-container .prev',
next: '.slider-container .next',
slide: '.slide',
slidesContainer: '#slides',
navLink: '.gift-nav li a',
init: function() {
// Initialize nextSlide function when clicking right arrow
$(this.next).click(this.nextSlide.bind(this));
$(this.next).click(this.activeTabs.bind(this));
// Initialize prevSlide function when clicking left arrow
$(this.prev).click(this.prevSlide.bind(this));
$(this.prev).click(this.activeTabs.bind(this));
// Initialize toggleSlides and activeTab functions when clicking nav links
$(this.navLink).click(this.toggleSlides.bind(this));
$(this.navLink).click(this.activeTabs.bind(this));
},
nextSlide: function(e) {
// Prevent default anchor click
e.preventDefault();
// Set the current slide
var currentSlide = $('.slide.current');
// Set the next slide
var nextSlide = $('.slide.current').next();
// remove the current class from the current slide
currentSlide.removeClass("current");
// Move the current slide to the end so we can cycle through
currentSlide.clone().appendTo(this.slidesContainer);
// remove the last slide so there is not two instances
currentSlide.remove();
// Add current class to next slide to display it
nextSlide.addClass("current");
},
prevSlide: function(e) {
// Prevent defaulct anchor click
e.preventDefault();
// Set the current slide
var currentSlide = $('.slide.current');
// Set the last slide
var lastSlide = $('.slide').last();
// remove the current class from the current slide
currentSlide.removeClass("current");
// Move the last slide to the beginning so we can cycle through
lastSlide.clone().prependTo(this.slidesContainer);
// remove the last slide so there is not two instances
lastSlide.remove();
// Add current class to new first slide
$('.slide').first().addClass("current");
},
toggleSlides: function(e) {
// Prevent defaulct anchor click
e.preventDefault();
var itemData = e.currentTarget.dataset.index;
var currentSlide = $('.slide.current');
currentSlide.removeClass("current");
newSlide = $('#slide-' + itemData);
// currentSlide.clone().appendTo(this.slidesContainer);
newSlide.addClass("current");
// console.log(newSlide);
},
activeTabs: function() {
// *** This could be much simpler if we didnt need to match the slider buttons
// *** up with nav tabs. Because I need to track the slider as well, I have
// *** made this its own function to be used in both instances
// get the active slide
var activeSlide = $('.slide').filter(':visible');
// get the active slide's id
var currentId = activeSlide.attr('id');
// grab just the number from the active slide's id
var currentNum = currentId.slice(-1);
// remove any active gift-nav links
$(this.navLink).removeClass("active");
// get the current tab by matching it to the current slide's id
var currentTab = $('.gift-nav li a[data-index="' + currentNum + '"]');
// make that active
currentTab.addClass("active");
}
}
$(document).ready(function(){
// Init our objects
GiftSlider.init();
});
Die Geige ist nicht das klar, wie ein paar der Bilder fehlen? Und es gibt verschiedene Bilder, aber nur 2 Links erscheinen immer an der Spitze .. Von meiner Verwendung sowieso ... Könnten Sie die Links aktualisieren und vielleicht einen Kommentar hinzufügen re. erwartetes Verhalten? –
@RachelGallen Ja, tut mir leid. Ich werde es klarer machen – JordanBarber
@RachelGallen Die Bilder im Schieberegler sind alle externen Quellen, so dass Sie in der Lage sein sollten, alle von ihnen zu sehen. Ich habe die irrelevanten "Logo" -Bilder in diesem https://jsfiddle.net/5z29xhzg/7/ entfernt. Es gibt vier Navigationslinks, also weiß ich nicht, warum du nur zwei sehen würdest. – JordanBarber