Auto-Scrolling in jQuery.scrollTo / jQuery.serialScroll wie verrückt arbeitet
-
04-10-2019 - |
Frage
Ich benutzen das folgende Tutorial eine Parallaxe Content Slider für meinen webiste zu machen: http://blog.themeforest.net/tutorials/create-a-funky-parallax-background-effect-using-jquery/
Ich habe es gut funktioniert, aber wollte Auto-Scrolling-Funktionen hinzuzufügen. Ich habe es von jQuery.serialScroll Zugabe und mit setInterval aber es funktioniert wie verrückt jetzt. Ich denke, der Schieber nun alle 5 Sekunden, statt 1 Folie pro 5 Sekunden durch alle 3 Rutschen gehen. Ich habe keine Ahnung, wie man es macht richtig funktioniert.
Hier ist ein Teil meines HTML:
<body>
<div id="header">
<h1 id="logo">Testing slider</h1>
</div>
<!-- end logo -->
<div id="slider">
<div id="background">
<div id="bg">
</div>
</div>
<!-- end slide background -->
<div id="wrapper">
<ul id="mask">
<li id="box1" class="box">
<a name="box1"><img src="images/slide1.png"></a>
<div class="content">
<div class="inner">
</div>
</div>
</li>
<!-- end box1 -->
<li id="box2" class="box">
<a name="box2"><img src="images/slide2.png"></a>
<div class="content">
<div class="inner">
</div>
</div>
</li>
<!-- end box2 -->
<li id="box3" class="box">
<a name="box3"><img src="images/slide3.png"></a>
<div class="content">
<div class="inner">
</div>
</div>
</li>
<!-- end box3 -->
</ul>
<!-- end mask -->
</div>
<!-- end wrapper -->
</div>
<!-- end Slider -->
<div id="content">
<div id="menu">
<ul id="menuitem">
<li><a href="#box1" class="slide_next"></a></li>
<li><a href="#box2" class="slide_next"></a></li>
<li><a href="#box3" class="slide_next"></a></li>
</ul>
</div>
<!-- end menu -->
</div>
<!-- end content -->
Und hier ist der beunruhigend JS-Code:
<script type="text/javascript">
$(document).ready(function() {
$('a.slide_next').click(function () {
$('#wrapper').scrollTo($(this).attr('href'), 800);
setPosition($(this).attr('href'), '#background', '0px', '50px', '100px')
$('a.slide_next').removeClass('selected');
$(this).addClass('selected');
return false;
});
});
setInterval(function() {$('a.slide_next').click()}, 5000);
function setPosition(check, div, p1, p2, p3) {
if(check==='#box1')
{ $(div).scrollTo(p1, 800); }
else if(check==='#box2')
{ $(div).scrollTo(p2, 800); }
else
{ $(div).scrollTo(p3, 800); }
};
</script>
Bitte, jemand hat eine Ahnung, wie es zu bekommen, die Art und Weise arbeitet, sollten sie (1 Folie je 5 sec) sein?
PS. Bitte schön, ich bin neu in dem Gebiet;)
Lösung
Ich denke, Ihr Problem ist, dass Sie das Click-Ereignis auf ALL 3 Sie sind Triggern „Dia nächsten“ Links alle 5 Sekunden, so dass es geht Wappy versuchen, Ihren Onclick Code für jede Folie auszuführen.
Was könnten Sie tun, ist so etwas wie folgt aus:
//set a global var to keep track of the slide we're on
window.slide = 1
function nextSlide(){
//increase window.slide by 1 (to go to the next slide),
//or if it is 3 return to the first slide
window.slide == 3 ? window.slide = 1 : window.slide++;
//trigger click event on the NEXT slide only
$('a[href=#box'+window.slide+']').click()
}
setInterval(nextSlide,5000);
Auf diese Weise alle 5 Sekunden das Click-Ereignis auf dem Link zur nächsten Folie zu bewegen ausgelöst wird (und nicht alle von ihnen).
Hope, das hilft!