2011-03-29 17 views
9

मेरे पास div कंटेनर में कुछ div आइटम हैं और मैं उन्हें लगातार एनिमेट करना चाहता हूं।पहले बच्चे को अंत में कैसे स्थानांतरित करें?

मुझे पता है कि अंतहीन पाश में अपना फ़ंक्शन कैसे चलाया जाए, लेकिन पहले div को चुनने में कोई समस्या है, इसे एनिमेट करें और इसे एनीमेशन के बाद अंत में ले जाएं।

मेरी समारोह इस तरह दिखता है:

function MoveItems() { 
     $(".container:first").animate(
      {width: "0px"}, 
      1000, 
      function(){ 
       $('.container').append($(this)); 
       $('.container').remove($(this)); 
      } 
     ); 
}; 

क्या मैं गलत कर रहा हूँ? ;/

संपादित करें:

आप सही के बारे में हटाने रहे हैं, लेकिन एनीमेशन अभी भी काम नहीं कर रहा है।

मुझे लगता है कि चयनकर्ता मूल रूप से काम नहीं कर रहा है।

मेरी एचटीएमएल है:

<div class="container"> 
<div class="image"><a href=""><img src="img/image001.jpg" /><span>IMAGE001</span></a></div> 
<div class="image"><a href=""><img src="img/image002.jpg" /><span>IMAGE002</span></a></div> 
<div class="image"><a href=""><img src="img/image003.jpg" /><span>IMAGE003</span></a></div> 
    <div class="image"><a href=""><img src="img/image004.jpg" /><span>IMAGE004</span></a></div> 
</div> 

लेकिन समारोह MoveItems चलाने के बाद एक बार होती है:

<div class="container" style="width: 0px; overflow: hidden;"> 
    <div class="image"><a href=""><img src="img/image001.jpg"><span>IMAGE001</span></a></div> 
    <div class="image"><a href=""><img src="img/image002.jpg"><span>IMAGE002</span></a></div> 
    <div class="image"><a href=""><img src="img/image003.jpg"><span>IMAGE003</span></a></div> 
    <div class="image"><a href=""><img src="img/image004.jpg"><span>IMAGE004</span></a></div> 
</div> 

इसलिए कार्यों नहीं कंटेनर के एक पहले बच्चे .container पर काम कर रहा है। क्या मैं यहाँ और अधिक specyfic हूँ? :)

+0

वास्तव में क्या समस्या है? – teuneboon

+1

http://api.jquery.com/append/ आपको हटाने की आवश्यकता नहीं है। –

+0

@repas, आपने उत्तर – kobe

उत्तर

10

$(".container:first") पहले का चयन करता है। इसे प्राप्तकर्ता।

आप $(".container>div:first")

तुम भी "में तेजी लाने के" कर सकते हैं अंतिम निकालें/बजाय माता पिता पर काम .container के लिए एक और डोम खोज करके संलग्न:

var $me = $(this); 
$me.parent().append($me); 
+0

लेवी मॉरिसन ने एक सबक बनाया, लेकिन यह वह रेखा है जो मेरे कार्य में मदद करती है। स्व। – lucaste

2

निकालें इस लाइन:

$('.container').remove($(this)); 

संलग्न() एक प्रतिलिपि बनाने नहीं है, यह लक्ष्य के अंत तक अपनी मौजूदा स्थिति से चयनित वस्तुओं ले जाता है।

5

append स्वचालित रूप से बच्चे को माता-पिता से हटा देता है और अंत में इसे स्थानांतरित करता है। remove इसे वापस जोड़ने के बिना बच्चे को फिर से हटा देगा। $('.container').remove($(this));

+0

यह एक अच्छा संकेत है लेकिन अभी भी काम नहीं कर रहा है। धन्यवाद – lucaste

1

यहाँ एक और अधिक व्यावहारिक उदाहरण है:: http://jsfiddle.net/8KyCD/1/

यह इतना है कि आप किसी भी तत्व पर आइटम चेतन कर सकते हैं एक jQuery प्लगइन बनाता है

बस लाइन छोड़ देते हैं। मैं इसे पाश करने के लिए सेट नहीं किया है, जैसा कि आप ने कहा कि आप पहले से ही पता है कि कैसे करना है;)

संपादित करें: यहाँ एक और उदाहरण है कि तत्व को छुपाता है, तो यह पता चलता है, और हमेशा के लिए पुनर्प्रसारण: http://jsfiddle.net/8KyCD/5/(documented code)

+0

यह जादू है। यह काम कर रहा है, लेकिन मैं वास्तव में उससे ज्यादा समझ नहीं पा रहा हूं। :) और मुझे माउसओवर होने पर एनीमेशन बंद करना होगा, इसलिए मुझे अपने लूप का उपयोग करना चाहिए। अच्छा काम आदमी! इस jsfiddle महान उपकरण। – lucaste

+0

मैं कुछ टिप्पणियों के साथ एक उदाहरण बनाउंगा और माउसओवर सामान जोड़ूंगा। मुझे थोडा समय दें 'यह डॉन होगा, दोस्त। –

+0

मैं मूल रूप से आपकी टिप्पणी को गलत तरीके से पढ़ता हूं। मैंने कार्यक्षमता को वही छोड़ दिया लेकिन http://jsfiddle.net/8KyCD/9/ में मैंने जो किया है उसके लिए टिप्पणियां हैं। मुझे खुशी है कि मैं आपको jsfiddle के साथ पेश कर सकता हूं :) प्रतिक्रियाओं में से एक को अपने उत्तर के रूप में स्वीकार करना न भूलें;) –

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