2010-10-11 17 views
16

मैं JQuery का उपयोग कर HTML में एक < चयन > इनपुट क्लोन करने के लिए चाहते हैं।
मुझे यकीन नहीं है कि इसके बारे में कैसे जाना है, इसलिए सोचा कि मैं यहां पूछूंगा।JQuery क्लोन <select> तत्व

विशेष रूप से दस्तावेज़ में इसे लिखने का सबसे अच्छा तरीका भी रुचि रखते हैं।

मेरे चयन तत्व इस तरह दिखता है:

<select id="options"> 
    <option value="1">Opt 1</option> 
    <option value="2">Opt 2</option> 
    <option value="3">Opt 3</option> 
</select> 

धन्यवाद।

+1

ध्यान दें: चयनित विशेषता jQuery में एक बग की वजह से कॉपी नहीं किया जाएगा। क्लोन के बाद चयनित इंडेक्स खो गया है। आपको मैन्युअल रूप से चयनित मान को मैन्युअल रूप से सेट करना होगा। http://bugs.jquery.com/ticket/9997 ऐसा लगता है कि jQuery जल्द ही इसे ठीक नहीं कर सकता है। सौभाग्य! – maartenmachiels

उत्तर

27

देखें: http://api.jquery.com/clone/

$('select#options').clone().attr('id', 'newOptions').appendTo('.blah'); 

appendTo (...) सिर्फ एक ही रास्ता क्लोन तत्वों को सम्मिलित करने के लिए है। अन्य तरीकों यहां पाया जा सकता: http://api.jquery.com/category/manipulation/

+0

धन्यवाद, मैंने आपके जवाब को दो पंक्तियों से तोड़ दिया है क्योंकि मैं इसे इस तरह पसंद करता हूं। – diggersworld

+2

jquery क्लोन पर दस्तावेज़ों से नोट करें, यह चयनित कुछ भी क्लोन नहीं करेगा: "प्रदर्शन कारणों से, कुछ फॉर्म तत्वों की गतिशील स्थिति (उदाहरण के लिए, टेक्स्टरेरा में टाइप किए गए उपयोगकर्ता डेटा और चयन में किए गए उपयोगकर्ता चयन) की प्रतिलिपि नहीं बनाई गई है क्लोन तत्वों के लिए। इनपुट तत्वों को क्लोन करते समय, तत्व की गतिशील स्थिति (उदाहरण के लिए, टेक्स्ट इनपुट में टाइप किए गए उपयोगकर्ता डेटा और चेकबॉक्स में किए गए उपयोगकर्ता चयन) क्लोन तत्वों में बनाए रखा जाता है। " http://api.jquery.com/clone/ देखें – dalore

0

jQuery एक clone विधि में निर्मित है। क्लोन तत्व को वापस जोड़ने के लिए कई options हैं। उचित विकल्प आपके आवेदन पर निर्भर है।

11

इस बारे में कैसे?

<select id="options"> 
    <option value="1">Opt 1</option> 
    <option value="2">Opt 2</option> 
    <option value="3">Opt 3</option> 
</select> 

// को लक्षित

<select id="options2"> 
</select> 

$('#options').find('option').clone().appendTo('#options2'); 

धन्यवाद।

9

स्वीकार्य उत्तर के साथ केवल समस्या यह है कि यदि आपके चयन में ऑप्टग्रुप शामिल हैं तो उनकी प्रतिलिपि नहीं बनाई जाएगी। उस मामले में, सबसे आसान तरीका मैंने पाया सिर्फ यह करने के लिए किया गया था:

$('#options2').html($('#options').html()); 
0

आप attr विकल्प का चयन परिवर्तन के साथ सच का चयन किया जा सकता है, तो का उपयोग क्लोन ठीक है।

$("#options").off("change").on("change", function() { 
 
    var val = $(this).val(); 
 

 
    $(this).find("option[value=" + val + "]").attr("selected", true); 
 
});

$("#options").off("change").on("change", function() { 
 
    var val = $(this).val(); 
 

 
    $(this).find("option[value=" + val + "]").attr("selected", true); 
 
});

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