2012-10-10 18 views
5

यह लूप (jsfiddle देखें) <span> टैग को कंटेनर में पांच बार जोड़ने की कोशिश करता है। लेकिन यह केवल एक बार करता है। क्यूं कर?यह केवल एक बार क्यों जोड़ा जाता है?

var myArr = [0,1,2,3,4]; 
var $span= $('<span></span>'); 
for (var i = 0; i < (myArr.length); i++) { 
    $('.contain').append($span); 
} 
+0

सुनिश्चित नहीं क्यों, लेकिन यह काम करता है अगर आप 'वर अवधि =" स्पैन "करने के लिए लाइन 2 को बदलने;'। – nickdos

+0

दिलचस्प, मैंने इसे (इस डेमो से कहीं अधिक जटिल) कोड पर परीक्षण किया, और उपर्युक्त टिप्पणी में सुझाव। जैसे एक jQuery ऑब्जेक्ट की बजाय एक स्ट्रिंग संलग्न करें। एक स्ट्रिंग बनाम एक jQuery ऑब्जेक्ट को जोड़ने के लिए कोई नुकसान है, या यह बुरा अभ्यास है? – brentonstrine

+0

मैं इस मामले में एक स्ट्रिंग का उपयोग करूंगा। jQuery ऑब्जेक्ट अच्छा है जब आप एक जटिल डोम तत्व को प्रोग्रामेटिक रूप से (कोड की कई पंक्तियों पर) बना रहे हैं या यदि आपने पहले से ही पृष्ठ से डोम तत्व प्राप्त करने के लिए jQuery का उपयोग किया है। – nickdos

उत्तर

7

समस्या यह है कि आप एक ही तत्व को कई बार जोड़ रहे हैं।
तत्व क्लोन करने के लिए clone का उपयोग करें और फिर append

$('.contain').append($span.clone());

demo

अद्यतन:

इस तरह आप अपने तत्व को अनुकूलित और फिर सभी गुणों के साथ यह क्लोन कर सकते हैं।

var $span = $('<span/>', { 
        'class': 'someClass otherClass', 
        'css': { 
         'background-color': '#FF0000' 
        } 
      }); 
for (var i = 0; i < (myArr.length); i++) { 
    $('.contain').append($span.clone()); 
} 

demo2

Update2: this टिप्पणी के अनुसार।

$('.contain').append('<span class="yourClass"/>');

+1

या यहां तक ​​कि सरल '$ ('। युक्त ')। संलग्न करें (' ');' और कोई $ span var – Fresheyeball

+0

@ फ्रेशेयबॉल मैं इस मामले में सहमत हूं, लेकिन इस तरह वह '$ span' को कस्टमाइज़ कर सकता है और इसे जोड़ सकता है एक ही शैली कई बार। –

+0

@ रिकार्डो लोहमान एक स्ट्रिंग संलग्न होने पर संभव नहीं है? मैं '.append ('') नहीं कर सका? – brentonstrine

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