2011-02-10 12 views
13

मैं यहां क्या कर रहा हूं?देरी से जोड़ा गया क्लास फ़ंक्शन काम नहीं कर रहा है

$(function() { 
$('ul li:nth-child(1)').addClass("go").delay(4500).removeClass("go"); 
$('ul li:nth-child(2)').addClass("go").delay(1500).removeClass("go"); 
$('ul li:nth-child(3)').addClass("go").delay(500).removeClass("go"); 
$('ul li:nth-child(4)').addClass("go").delay(4500).removeClass("go"); 
$('ul li:nth-child(5)').addClass("go").delay(1000).removeClass("go"); 
}); 
+0

लिटिल स्पष्टीकरण काम होगा। मुझे लगता है कि आप प्रत्येक आइटम के लिए अलग-अलग देरी के बाद इसे एक विशिष्ट क्रम में किसी सूची के वर्ग को बदलने की कोशिश कर रहे हैं। क्या काम नहीं करता है? – Spacedman

+0

.delay() केवल एनिमेशन में देरी करता है, –

उत्तर

16

.delay() केवल एनिमेशन के साथ काम करने के लिए डिज़ाइन किया गया है। आप आप क्या कर रहे के लिए नियमित रूप से setTimeouts का उपयोग कर का सहारा लेना होगा:

var li = $('ul li:nth-child(1)').addClass('go'); 
setTimeout(function() { 
    li.removeClass('go'); 
}, 4500); 

हर <li> एक छोटे से अधिक सुखद के लिए ऐसा करने के लिए, आपको इतना की तरह अपने कोड refactor कर सकते हैं:

$(function() { 
    var delays = [4500, 1500, 500, 4500, 1000]; 
    $('ul li').addClass('go').each(function (i) { 
     setTimeout(function (li) { 
      li.removeClass('go'); 
     }, delays[i], $(this)); 
    }); 
}); 
+0

फ़ंक्शन नहीं करता है मैं एक एनीमेशन बना रहा हूं जहां मेरे पास सूची आइटम का प्रदर्शन होगा: कोई भी नहीं; इसके बाद मुझे एक समय में प्रत्येक सूची आइटम में एक वर्ग जोड़ने की आवश्यकता होती है, एक समय में, पूर्व निर्धारित समय के लिए, केवल समय बीत जाने के बाद कक्षा को हटा दिया जाता है और अगली सूची आइटम में जोड़ा जाता है। किस बिंदु पर एक ही कक्षा को अगली सूची आइटम में पूर्व निर्धारित समय की पूरी तरह से अलग राशि के लिए जोड़ा जाएगा। एस –

+0

@ बिज़ारो के लिए, यह यहां काम कर रहा है: http://jsfiddle.net/eXJQB/। –

+0

thx, यह थोड़े काम करता है ... यदि आप देखते हैं कि आप देखते हैं कि सभी कक्षाएं एक ही पल पर लागू होती हैं (वे सभी एक ही समय में नीले रंग की बारी होती हैं) तो वे सभी अलग-अलग अंतराल पर दूर हो जाते हैं। एक बार समय बीत जाने के बाद, मुझे केवल एक सूची आइटम पर कक्षा लागू करने की आवश्यकता है, फिर इसे अगले सूची आइटम –

39

बस को जोड़ने के लिए है, तो आप उपयोग कर सकते हैं एक .queue:

$('ul li:nth-child(1)').addClass("go") 
         .delay(4500) 
         .queue(function() { 
          $(this).removeClass("go"); 
          $(this).dequeue(); 
         }); 
+1

आह मैं इस +1 के बारे में भूल गया। '.dequeue()' या 'अगला()' हालांकि मत भूलना! –

+1

@ बॉक्स 9 - अच्छा बिंदु। मैंने '.dequeue()' में फेंक दिया है। – karim79

+1

यह अभी भी एक ही मुद्दा है - वर्गों को एक ही समय में सूची आइटम में जोड़ा जाता है ... फिर उन्हें अलग-अलग समय पर हटा दिया जाता है: http://jsfiddle.net/bM6uY/8/ –

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