vad få du om du kör console.log(this) inne i din showText i konsollen på din webbläsare (Chrome, Firefox+firebug)?
Om den retunera din ul.myRoundabout så kan du väl bara köra:
$(this).roundabout("animateToNextChild")
4 svar · 994 visningar · startad av noshornin
Hej.
Jag försöker fixa en slider med roundabout (http://fredhq.com/projects/roundabout). Problemet jag har nu är att jag enbart vill ha en bild i varje li och sedan en dold text under bilden. Denna texten ska fadeas in på det aktiva elementet.
Alltså jag har en lista såhär:
<ul class="myRoundabout">
<li>
<img src="..." alt="">
<div style="display: none;">text text text</div>
</li>
<li>
<img src="..." alt="">
<div style="display: none;">text text text</div>
</li>
.
.
.
</ul>
Sedan vill jag på varje btnNextCallback och btnPrevCallback att diven på det aktiva elementet fadas in. Jag förstår inte hur jag ska få tag på det aktiva elementet :(
Jag får dock inte till det alls och känner att mina javascript-kunskaper är lite otränade...
Skrivit något sådant här hittills:
<script>
$(document).ready(function() {
$('ul.myRoundabout').roundabout({
shape: 'waterWheel',
btnNextCallback: function(){
roundabout("getChildInFocus").div.fadeIn('slow', function(){});
},
btnPrevCallback: function(){
roundabout("getChildInFocus").div.fadeIn('slow', function(){});
}
});
});
</script>
Tack i förväg.
vad få du om du kör console.log(this) inne i din showText i konsollen på din webbläsare (Chrome, Firefox+firebug)?
Om den retunera din ul.myRoundabout så kan du väl bara köra:
$(this).roundabout("animateToNextChild")
Tack för svaret voigtann1. Men jag lyckades lösa det på egenhand. om någon annan vill göra samma sak, kan jag ju skriva hur jag gjorde.
Om man sätter option triggerFocusEvents till true kommer en "focus" event att triggas på li elementet varje gång det hamnar i fokus. Samtidigt kommer en "blur" event att triggas på det li element som lämnar fokus.
Det är ju då bara att skriva ngt i stil med:
<script>
$(document).ready(function() {
$('ul.myRoundabout').roundabout({
shape: 'waterWheel',
triggerFocusEvents: true, //krävs för att focus event skiten ska fungera
},function(){
//visar diven under det li element som har id="1" på roundabouts callback
jQuery("div", "#1").fadeIn('slow');
});
$('li').bind('blur', function() {
//när li elementet åker ur fokus så fadeas det ut
jQuery("div", this).fadeOut('slow');
});
$('li').bind('focus', function() {
//när li elementet åker i fokus så fadeas det in
jQuery("div", this).fadeIn('slow');
});
});
</script>
Vill ge lite tips:
Din kod kommer inte fungera i IE (du har , för mycket i ditt object) och $ är samma sak som window.jQuery (eller som du har där jQuery) så du kan ju "korta" ner det, du binder också alla li element på din sida, vilket är kanske det önskade resultatet:
$(document).ready(function() {
$('ul.myRoundabout').roundabout({
shape: 'waterWheel',
triggerFocusEvents: true
}).find('li').bind('blur focus', function(e) {
$('div', this)[e.type === 'blur' ? 'fadeOut' : 'fadeIn']('slow');
})
.filter(':first').trigger('focus'); // find the first li and trigger its focus event.
});