2011-06-06 5 views
5

मैं अब मैं क्या चाहते हैं तो, पृष्ठ लोड पर है के लिए एक यादृच्छिक ".slides" जो ठीक काम करता है दिखाने केjquery उसी वर्ग के अगले div दिखाते हैं?

  <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> 

तरह div के का एक समूह और jQuery

$(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(); 
    }); 
}); 

का एक समूह है। और फिर जब कोई उपयोगकर्ता ".next" या ".previous" दबाता है तो यह अगला ".slides" लोड करता है।

हालांकि मुझे यह काम करने के लिए प्रतीत नहीं होता है? जब मैं अगली या पिछली बार दबाता हूं तो यह कुछ भी नहीं दिखाता है?

कोई मदद?

उत्तर

10

आप

का उपयोग करना चाहिए पिछले

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

के लिए और अगले

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

के लिए और सबसे महत्वपूर्ण .slides को छिपाने के लिए इससे पहले कि आप अगले एक दिखा है।

तो $('.slides').hide(); होना चाहिए इससे पहले कि .show() आदेशों अन्यथा, आप बस एक आप चाहते हैं और दिखाने के तो छिपाने के सभी (जिसमें हाल ही में पता चला है सहित)


कुल मिलाकर

$('.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

आश्चर्यजनक, मैं अंत को कैसे संभाला सकता हूं? क्या यह देखने के लिए मेरे पास कोई रास्ता है कि अगला वाला पहला व्यक्ति होगा या नहीं? – Steven

+0

@ स्टेवेन ने इसका पूरा ख्याल रखने के लिए पूर्ण कोड में कुछ बदलाव किया .. –

+0

धन्यवाद, पूरी तरह से काम करता है। – Steven

संबंधित मुद्दे