2011-06-06 11 views
5

Ben Şimdi bu kadar iyi çalışır rastgele ".slides" göstermek, sayfa yüklemesi sırasında olduğunu istediklerinijquery aynı sınıfın bir sonraki divini gösteriyor mu?

  <div class="slides"> 
       <div id="box_bg"> 
        <div class="previous"></div> 
        <img src="images/minido_pic.png" width="267" height="252" alt="MiniDo" class="img1" /> 
        <div class="next"></div> 
       </div> 
       <div id="text1"> 
        <p>MiniDo - Adobe Air App - Simplistic design wrapped around a simple iOS style window built for the Windows environment using Adobe Air.</p> 
       </div> 
      </div> 

gibi div'lerden bir demet ve

$(document).ready(function(){ 
    $(".slides").hide(); 

     var length = $(".slides").length; 
     var ran = Math.floor(Math.random()*length); 
     $(".slides:nth-child(" + ran + ")").show(); 

    $('.previous').click(function() { 
     $(".slides").parentsUntil(".slides").prev().show(); 
     $('.slides').hide(); 
    }); 

    $('.next').click(function() { 
     $(this).parentsUntil(".slides").next().show(); 
     $('.slides').hide(); 
    }); 
}); 

jquery

bir grup var. Ve sonra bir kullanıcı ".next" veya ".previous" tuşlarına bastığında, bir sonraki ".slides" dosyasını yükler.

Ancak işe yaramıyor gibi görünmüyor mu? Sonraki ya da daha önce bastığımda hiçbir şey göstermiyor mu?

Herhangi bir yardım?

cevap

10

Bir önceki

$(this).closest('.slides').prevAll('.slides').eq(0).show(); 

için ve sonraki

$(this).closest('.slides').nextAll('.slides').eq(0).show(); 

için

kullanmalıdır Ve en önemlisi bir sonraki adımı göstermeden önce .slides saklamaktır.

.show() komutları aksi takdirde, sadece istediğiniz birini göstermek ve daha sonra gizlemek önce Yani $('.slides').hide(); olmalıdır


Toplamda

$('.previous').click(function() { 
    $('.slides').hide(); 
    var previous = $(this).closest('.slides').prevAll('.slides').eq(0); 
    if (previous.length === 0) previous = $(this).closest('.slides').nextAll('.slides').last(); 
    previous.show(); 
}); 

$('.next').click(function() { 
    $('.slides').hide(); 
    var next = $(this).closest('.slides').nextAll('.slides').eq(0); 
    if (next.length === 0) next = $(this).closest('.slides').prevAll('.slides').last(); 
    next.show(); 
}); 
+0

(sadece gösterdi dahil olmak üzere ) tüm Harika, sonu nasıl halledebilirim? Birincisinin ilk olup olmadığını kontrol etmenin bir yolu var mı? – Steven

+0

@Steven, bununla ilgilenmek için kodun tamamında bir değişiklik yaptı .. –

+0

Teşekkür ederim, mükemmel çalışıyor. – Steven

İlgili konular