2010-02-25 7 views
23

JQuery का उपयोग करना इस तरह के एक div को क्लोन करना संभव है और इसके आईडी में एक नया पहचानकर्ता जोड़ना और उसके सभी बच्चों के आईडी को बदलना संभव है?एक div क्लोन करें और इसके आईडी को बदलें और उसके सभी बच्चे अद्वितीय होने के लिए

उदाहरण के लिए मैं इस क्लोन करने के लिए सक्षम होने के लिए करना चाहते हैं:

<div id="current_users"> 
<table id="user_list"> 
<tr id="user-0"> 
<td id="first_name-0">Jane</td> 
<td id="last_name-0">Doe</td> 
</tr> 
<tr id="user-1"> 
<td id="first_name-1">John</td> 
<td id="last_name-1">Doe</td> 
</tr> 
</table> 
</div> 

और यह इस तरह दिखना है:

<div id="current_users_cloned"> 
<table id="user_list_cloned"> 
<tr id="user-0_cloned"> 
<td id="first_name-0_cloned">Jan</td> 
<td id="last_name-0_cloned">Doe</td> 
</tr> 
<tr id="user-1_cloned"> 
<td id="first_name-1_cloned">John</td> 
<td id="last_name-1_cloned">Doe</td> 
</tr> 
</table> 
</div> 

या मैं सिर्फ अपनी संरचना पर पुनर्विचार और rel विशेषताओं का उपयोग करना चाहिए और पुन: प्रयोज्य वर्ग घोषणाएं?

धन्यवाद,

टेगन स्नाइडर

उत्तर

40
$("#current_users").clone(false).find("*[id]").andSelf().each(function() { $(this).attr("id", $(this).attr("id") + "_cloned"); }); 

और अपने घटनाओं को देखने के लिए किसी भी संलग्न देखते हैं अगर। यदि वे आईडी पर भरोसा करते हैं तो आपको उन्हें ठीक करना होगा।

+1

धन्यवाद कि मैं वही हूं जो मैं ढूंढ रहा था। यह बहुत अच्छा काम करता है। –

+4

आप 'attr() ':' $ (this) .attr (' id ', function (i, id) {return id + "_ cloned";} के फ़ंक्शन फॉर्म का उपयोग करके बाल को और अधिक DRY बना सकते हैं; '' – Phrogz

+1

धन्यवाद। आपका कोड मेरी सैकड़ों लाइन को बचाता है। :) – Roopendra

1

जब तक आपको वास्तव में कोड के माध्यम से उन क्लोन किए गए डीवी के प्रत्येक को अनन्य रूप से पहचानने की आवश्यकता नहीं है, तो मैं आपकी आईडी को पुन: प्रयोज्य कक्षाओं के साथ बदल दूंगा। अन्यथा, डेविड मॉर्टन का जवाब ऐसा लगता है कि यह चाल चल सकता है।

+0

बचाओ मैं सहमत हूं। मैं जो कर रहा हूं उसके लिए मुझे विशिष्टता की आवश्यकता है :) आपके सुझाव के लिए धन्यवाद। –

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