2011-11-28 8 views
8

http://jsfiddle.net/p57hm/क्लोनिंग तत्वों, एक समय में एक से अधिक क्लोन से बचने जब

जोड़ने मैं बस प्रत्येक क्लिक पर एक और क्लोन चाहते हैं।

$(function(){ 

    $('input').click(function(){ 
     $('.cloneitem').clone().appendTo('#container'); 
    }); 

}); 

एचटीएमएल: मैं कुछ obvious_ धन्यवाद

स्क्रिप्ट से वंचित रह गए

<input type="button" value="clone it"/> 

<div id="container"></div> 

<div class="cloneitem">clone</div> 

उत्तर

28

इस http://jsfiddle.net/p57hm/1/

$(function(){ 

    $('input').click(function(){ 
     $('.cloneitem:first').clone().appendTo('#container'); 
    }); 

}); 

वर्तमान में प्रयास करें आप सभी तत्वों वर्ग है कि क्लोनिंग कर रहे हैं .cloneitem लेकिन आप केवल एक समय में 1 चाहते हैं, तो आप सभी वें चुनना नहीं चाहते हैं ई .cloneItem लेकिन सिर्फ पहला, और एक क्लोन।

+0

हाँ बस इसे समझ लिया, धन्यवाद – Johan

+0

धन्यवाद, यह बहुत काम करता है यह 100% –

3

आपके क्लोनों में अभी भी कक्षा cloneitem है इसलिए इसलिए फिर से क्लोन किया जा रहा है। या तो इस वर्ग को हटाएं या चयनकर्ता को बदलें ताकि इसमें उन्हें शामिल न किया जाए।

कुछ इस तरह, वर्ग क्लोन जोड़ने और उन वस्तुओं को छान:

$(function(){ 
    $('input').click(function(){ 
     $('.cloneitem').not('.cloned').clone().addClass('cloned').appendTo('#container'); 
    });  
}); 

http://jsfiddle.net/infernalbadger/p57hm/4/

+0

$ ('क्लोनिटिम') अभी भी एक से अधिक तत्व हो सकता है। तत्व टेम्पलेट (क्लोन से तत्व) के लिए कक्षा के बजाय आईडी का उपयोग करना अच्छा विचार हो सकता है। – Stefan

1

$('.cloneitem')cloneitem वर्ग के साथ सभी तत्वों का चयन करता है।

उपयोग .first():

$('input').click(function(){ 
    $('.cloneitem').first().clone().appendTo('#container'); 
}); 
0

आप एक 'cloneitem' वर्ग के साथ सभी तत्वों को क्लोनिंग कर रहे हैं ताकि पहली बार में यह एक बार क्लोन, दूसरी बार में यह दो .. यू इसे ठीक कर सकते हैं क्लोन इस तरह केवल पहली वस्तु छान कर:

$(function(){ 

    $('input').click(function(){ 
     $('.cloneitem').first().clone().appendTo('#container'); 
    }); 

}); 

तुम भी हमेशा पिछले एक का चयन कर सकते हैं:

$('.cloneitem').last().clone().appendTo('#container'); 

या बस .clone() बाँध पहले आइटम पर:

$('.cloneitem:first').clone().appendTo('#container'); 
1

आप वर्ग "cloneitem" वाले एक तत्व क्लोनिंग कर रहे हैं और उसके बाद भी एक ही कक्षा अगले क्लोन के लिए समस्याएं उत्पन्न कर के साथ क्लोन तत्व जोड़कर।

$(function() { 

    $('input').click(function(){ 
     $('.cloneitem').first().clone().removeClass('cloneItem').appendTo('#container'); 
    }); // edited 

}); 
+0

आपको 'फर्स्ट()' को हटा देना चाहिए, क्योंकि यह अनैतिक है, क्योंकि क्लोन क्लोन इटिम क्लास हटा दिया जाता है, फिर भी उन्हें क्लोन नहीं किया जाएगा।अगर वांछित हो तो इस तरह कई वस्तुओं को एक साथ क्लोन किया जा सकता है। – HopefullyHelpful

1

एक ही समस्या थी। उस div को एक आईडी जोड़ें जिसे आप क्लोन करना चाहते हैं, यह अद्वितीय है। एक तत्व में केवल एक आईडी हो सकती है लेकिन कई कक्षाएं हो सकती हैं।

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