2013-08-25 8 views
7

मैं इस बहुत ही सरल यहाँ स्लाइड शो है: fiddle
Jquery कोड:Jquery - स्लाइड शो बटन समारोह कोड

$("#slideshow > div:gt(0)").hide(); 

var maxindex = $('#slideshow > div').length; 

var index = 0 
var interval = 3 * 1000; // 3 seconds 
var timerJob = setInterval(traverseSlideShow, interval); 

function traverseSlideShow() { 
    console.log("current index: " + index); 

    $('#slideshow > div') 
     .stop() 
     .fadeOut(1000); 
    $('#slideshow > div').eq(index) 
     .stop() 
     .fadeIn(1000); 

    $('ul li').removeClass('active'); 
    $('ul li:eq(' + index + ')').addClass('active'); 
    index = (index < maxindex - 1) ? index + 1 : 0; 

} 

for (var i = 0; i < maxindex; i++) { 
    $('ul').append('<li class="' + (i == 0 ? 'active' : '') + '"></li>'); 
} 

$(document).on('click', 'ul li', function() { 
    index = $(this).index(); 
    traverseSlideShow(); 
    clearInterval(timerJob); 
    timerJob = setInterval(traverseSlideShow, interval); 
}); 

आप वहाँ तीन बटन किसी भी बटन क्लिक करने पर, देख सकते हैं स्लाइडशो अपने संबंधित तस्वीर को जाता है आपके द्वारा क्लिक किए जाने वाले बटन के साथ, और आप 3 सेकंड पारित करने के बाद इस बटन परिवर्तन की शैली (क्लिक और पर) देख सकते हैं।
मुझे इस कोड के साथ एक समस्या है जिसे मैं ठीक करने का प्रयास कर रहा हूं।
ठीक है, मैं किसी भी बटन की शैली बदलने के बाद एक सेकंड के लिए किसी भी बटन पर क्लिक करने से रोकने की कोशिश कर रहा हूं, सरल, अगर आप किसी भी बटन पर क्लिक करते हैं तो आप 1 सेकंड, और के साथ एक और बटन पर क्लिक नहीं कर सकते हैं, अगर स्लाइड शो स्वचालित रूप से एक फोटो लोड करता है जिसे आप किसी अन्य बटन को 1 सेकंड के भीतर क्लिक करके लोड नहीं कर सकते हैं।

उत्तर

5

मैं बटन के लिए सीएसएस वर्ग के रूप में एक झंडा जोड़ना होगा है:

कार्य बेला: http://jsfiddle.net/b_m_h/Jtec5/86/

ध्वज .enable सीएसएस वर्ग है, केवल li.enable के साथ क्लिक करने योग्य है।

घटना केवल सुनता के लिए clickul li.enable पर:

... 
$(document).on('click', 'ul li.enable', function() { 
... 

सबसे पहले, सभी बटन क्लिक करने योग्य होना चाहिए, इसलिए सभी li के लिए .enable वर्ग जोड़ें:

for (var i = 0; i < maxindex; i++) { 
    $('ul').append('<li class="' + (i == 0 ? 'active' : '') + ' enable"></li>'); 
} 

और निष्क्रिय करने के लिए तंत्र को जोड़ने li बटन और traverseSlideShow() में 1 सेकंड के बाद इसे फिर से सक्षम करें:

function traverseSlideShow() { 
    ... 
    $('ul li').removeClass('enable'); 
    setTimeout(function(){ 
     $('ul li').addClass('enable'); 
    }, 1000); 
} 
+0

बिल्कुल सही कोड, 100% काम करता है, मैं जितनी जल्दी हो सके 50 प्रतिष्ठा दूंगा। बहुत बहुत धन्यवाद –

+0

क्या आप अभी जोड़ा गया कोड जोड़ सकते हैं, या आपने पूरा कोड बदल दिया है? –

+0

निश्चित रूप से, मैंने कोड में केवल परिवर्तनों के साथ उत्तर अपडेट किया है। और बक्षीस के लिए धन्यवाद। :) – BMH

1
एक समारोह में

उपयोग setTimeout जहां ख बटन की आईडी में देरी हो करने के लिए

function slow_button(b) { 

    $('#' + b).attr("disabled", true); 
    var t = setTimeout(function(){$('#' + b).removeAttr("disabled")}, 1000); 
} 
+0

मैं वैसे भी में अपने कोड काम प्राप्त करने में सक्षम नहीं कर रहा हूँ, आप कृपया यहाँ स्लाइड शो के JSFiddle में इसे लागू कर सकते हैं: http://jsfiddle.net/Jtec5/ 33/ –

2

इस कोशिश,

(function(){ 
    $('button').on('click',function(){ 
    var $this=$(this); 
      $this 
       .attr('disabled','disabled'); 
       setTimeout(function() { 
       $this.removeAttr('disabled'); 
       }, 1000); 
      }); 
    })(); 
+0

आपकी कोशिश के लिए धन्यवाद, लेकिन दुर्भाग्यवश यह कोड 100% सहायक नहीं है, यह चित्र लोड होने पर 1 सेकंड के लिए बटन पर क्लिक करना बंद कर देता है, लेकिन जब चित्र लोड हो रहा है ** स्वचालित रूप से **। –

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