2012-03-10 22 views
5

मैं एक for पाश है div रों की एक पंक्ति उत्पन्न करने के लिए, मेरे कोडjQuery - समूह या CONCATENATE jQuery वस्तुओं एक पाश के द्वारा बनाई गई है, तो appendTo उपयोग करने के लिए केवल एक बार

for(j=0; j<7; j++) { 
    $('<div/>', { 
    id: 'unique', 
    html: 'whatever' 
}).appendTo('#container'); 

इस कोड को बाहर की तलाश करने लगता है है प्रत्येक पुनरावृत्ति के लिए # कंटेनर और इसमें एक नया div संलग्न करता है।

कोड कैसे लिखते हैं ताकि मैं पहले सभी divs बना सकूं और फिर कंटेनर को एक बार में जोड़ सकूं? क्षमा करें, मैंने concatenate/group/jquery ऑब्जेक्ट्स जैसे कीवर्ड खोजने की कोशिश की, और सही खोज परिणाम नहीं लगते हैं।

TIA

+0

क्यों आप कोड केवल एक बार 'appendTo'' कॉल करना चाहते हैं? – JaredPar

+1

@ जेरेडपायर, क्योंकि जैसा कि मैं इसे समझता हूं, jquery को लूप के पुनरावृत्ति के रूप में कई बार एक बार सही div को खोजना पड़ता है। – Jamex

उत्तर

7

Xander के समाधान ठीक काम करना चाहिए। मैं व्यक्तिगत रूप से जेएस में 'लंबे' एचटीएमएल तारों के साथ काम करना पसंद नहीं करता हूं। यहां एक समाधान है जो आपके कोड के समान दिखता है।

var elements = []; 
for(j=0; j<7; j++) { 
    var currentElement = $('<div>', { id: i, text: 'div' }); 
    elements.push(currentElement[0]); 
} 
$('#container').append(elements); 
+0

धन्यवाद जस्टिन, यह थोड़ी सी बात है जो मुझे दिमाग में थी। मुझे आश्चर्य है कि 'ग्रुपिंग' ऑब्जेक्ट्स का एक और तरीका है, क्योंकि यह विधि एक सरणी पेश करती है जो कर संसाधनों को कर सकती है। – Jamex

+0

हां, आप संभावित रूप से jQuery ऑब्जेक्ट्स के निर्माण पर मामूली कर का भुगतान कर सकते हैं। हालांकि, आपको अधिक आसानी से बाध्यकारी घटनाओं के अतिरिक्त लाभ मिलते हैं (यदि आप प्रत्येक तत्व के लिए समान हैं तो आप शायद घटनाओं को प्रतिनिधि बनाना चाहते हैं), साथ ही इस तरह से आपको उन घटनाओं पर बंद करने का अतिरिक्त लाभ मिलता है (प्रदर्शित नहीं किया गया यहां), यदि आवश्यक हो। मुझे नहीं लगता कि आप हजारों तत्वों तक पहुंचने तक किसी भी प्रदर्शन लाभ को देखेंगे। –

+0

हाय जस्टिन, कोड काम करता है, लेकिन मुझे लाइन तत्वों को समझ में नहीं आता है। पुश (वर्तमान एलिमेंट [0]); वर्तमान एलीमेंट में [0] क्यों है? – Jamex

4

यह मदद कर सकता है

var htm = ''; 
for(j=0; j<7; j++) { 
    htm+= '<div id="unique_'+i+'">whatever</div>'; 
} 

$('#container').html(htm); // Or append instead of html 
+0

धन्यवाद जोस/ज़ेंडर, मैं वास्तव में ऐसा नहीं करना चाहता था क्योंकि मैं टेक्स्ट स्ट्रिंग लिखने के साथ गड़बड़ नहीं करना चाहता था। मुझे लगता है कि जस्टिन का कोड मेरे मन में जितना अधिक था। – Jamex

+1

ओटीओएच, स्ट्रिंग वैरिएबल का निर्माण jquery ऑब्जेक्ट्स से कम कर लगाना चाहिए। – Jamex