2012-01-19 17 views
10

मैं एक jQueryUI संवाद बनाने की कोशिश कर रहा हूं और इसे अपने आप को एक विशिष्ट तत्व के भीतर डोम में डालने की कोशिश कर रहा हूं। हमारे पास एक सामग्री अनुभाग है जो कई शैलियों का अभिभावक है, इसलिए संवाद के भीतर आइटम स्टाइल नहीं किए जाते हैं क्योंकि jqueryUI शरीर में संलग्न होता है। क्या मेरे चयन के चयनकर्ता को जोड़ने के लिए jqueryUI को बताने का कोई तरीका है?एक jquery UI संवाद के DOM स्थान को नियंत्रित करना

यह

<section id="content"> 
</section> 
<div class="dialog"> the dialog </div> 

क्या करता है जो मैं चाहता

<section id="content"> 
<div class="dialog"> the dialog </div> 
</section> 
+0

$ ("चयनकर्ता।") पढ़ सकते हैं संवाद ({appendTo: "#someElem"})। जो आप खोज रहे हैं ... नीचे मेरा जवाब देखें। – testing123

उत्तर

13

से मैं यह जानता हूँ सवाल थोड़ा पुराना है लेकिन मैं यह सुनिश्चित करना चाहता था कि किसी भी नए कॉमर्स को सही दिशा में इंगित किया गया हो। विकल्प "appendTo" संस्करण 1.10.0 में जोड़ा गया था।

$(".selector").dialog({ appendTo: "#someElem" }); 

आप के बारे में यह here

+0

बहुत साफ समाधान आपने मुझे बहुत से कोड कोड रिफैक्टरिंग को बचाया है। –

-1

आप jQuery के append विधि का उपयोग कर सकते हैं।

$('#content').append('<div class="dialog"> the dialog </div>'); 
+0

मुझे नहीं लगता कि आप समझते हैं कि यहां क्या हो रहा है। जब आप $ ('# mydialog') कॉल करते हैं। संवाद() jquery आपकी सामग्री को एक नया div बनाने के लिए क्लोन करता है, तो उसमें 'बॉडी' को जोड़ता है जिससे इस प्रकार कैस्केड – dstarh

+0

तोड़ता है यदि आप यही चाहते हैं, तो आप पिछले माता-पिता के संदर्भ को स्टोर कर सकते हैं जब आप संवाद बनाते हैं तो संवाद के, और संवाद को वापस बंद करें। – rahool

+0

यह तब नहीं है जब संवाद बंद हो जाता है, यह तथ्य यह है कि जब यह खुलता है तो गलत माता-पिता मिलते हैं। – dstarh

1

This link शायद कुछ उपयोग के लिए।
लेकिन जो चीज आप प्राप्त करना चाहते हैं वह मुझे jQuery UI लाइब्रेरी के मॉडल के खिलाफ थोड़ा सा लगता है। आप this page पर थीम टैब में निर्दिष्ट सीएसएस कक्षाओं का उपयोग करके संवाद शैली बना सकते हैं।
आप तत्व की आईडी हस्तांतरण कर सकते हैं, तो आप एक वर्ग के लिए एक संवाद में बनाने के लिए, चाहते हैं, तो आपको निम्न कोड

$(".dialog").dialog({ dialogClass: 'content' }); 

उपयोग कर सकते हैं और आप बदलाव को प्रतिबिंबित करने के लिए अपने सीएसएस अद्यतन करना चाहिए। इस प्रकार आप, परिचय नहीं है डुप्लीकेट आईडी-एस (भविष्य के काम में समस्याओं को जन्म दे और अर्थ की दृष्टि से सही नहीं है हो सकता है) यदि आप संवाद सामग्री

+0

यह वह संवाद नहीं है जिसे मैं शैली बनाना चाहता हूं, यह उस क्षेत्र के भीतर फॉर्म फ़ील्ड्स, सेक्शन, लेबल्स, फ़ील्ड इत्यादि है जो मैं स्टाइल करना चाहता हूं और अभी वे # सामग्री फ़ील्ड लेबल {शैलियों} की तरह सेट हैं लेकिन चूंकि jqueryUI डोम जोड़ता है तत्व यह शरीर को बनाता है, यह अब # सामग्री "के नीचे नहीं है और शैलियों को ठीक से कैस्केड नहीं किया जाता है – dstarh

+0

हां, मेरा मतलब यही है, आप' # सामग्री' को '.ui-dialog-content' में बदल सकते हैं और यह काम करेगा। यदि #content में फ़ील्ड हैं, जिन्हें डायलॉग में दिखाए गए तरीके से स्टाइल किया जाना चाहिए, तो आप हमेशा '#content फ़ील्डसेट लेबल, .ui-dialog-content फ़ील्ड लेबल {शैलियों} ' –

+0

जैसे कुछ भी कर सकते हैं #content से कैस्केड होने वाली लगभग 30 या 40 शैलियों हैं और मुझे "ईई-डायलॉग-कंटेंट फॉर्म फ़ील्डसेट सेक्शन इनपुट "इत्यादि जैसे .ui-dialog-dialog-content के अंतर्गत घोंसले के लिए सब कुछ दोहराना नहीं होगा। – dstarh

6

अंदर #content टैग नकल Custom CSS scope and jQuery UI dialog themes

// Create the dialog, but don't open it yet 
var d = $('#myDialogContents').dialog({ 
    autoOpen: false 
    // other dialog options 
}); 
// Take whole dialog and put it back into the custom scope 
d.parent('.ui-dialog').appendTo('.myCustomScope'); 
// Open the dialog (if you want autoOpen) 
d.dialog('open'); 
+0

ध्यान दें कि यदि '.myCustomScope'' ओवरफ़्लो है: 'ऑटो, छुपा, या स्क्रॉल पर सेट करें, तो डायलॉग बॉक्स प्रभावित होगा क्योंकि यह उस तत्व का बच्चा है। –

+0

अधिक हालिया उत्तर को स्वीकार करने के लिए जा रहे हैं क्योंकि यह अब एक बेहतर समाधान है – dstarh

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