2012-05-05 24 views
9

मेरे पास एक मूल div है जो आकार बदलने योग्य है (केवल चौड़ाई) - इस div के भीतर मेरे पास कई अन्य divs हैं जो आकार बदलने योग्य (केवल ऊंचाई) हैं।मैं बाल पुनर्विक्रय को नष्ट किए बिना एक jquery resizable कैसे नष्ट कर सकता हूँ?

कभी-कभी मैं या तो पैरेंट चौड़ाई आकार बदलने या नष्ट करना चाहता हूं लेकिन जगह में आंतरिक ऊंचाई का आकार बदलना चाहता हूं।

जब मैं $("#idTopDiv").resizable("destroy"); पर कॉल करता हूं, तो यह सभी बाल divs पर भी resizables को नष्ट कर देता है।

विशिष्ट लेआउट है: -

<div id=idDivTop> <!-- Resizable width --> 
    <div id=idInnerOne> 
    </div> 

    <div id=idInnerTwo> <!-- Resizable height --> 
    <div> 
</div> 

किसी भी विचार की सराहना।

+0

क्या आपने बच्चे divs पर फिर से '.resizable' कहा जाता है? –

उत्तर

6

मुझे लगता है कि ऐसा इसलिए होता है क्योंकि आकार बदलने योग्य का नष्ट ui तत्व के अंदर सभी आकार बदलने वाले हैंडल को हटा देता है, जिसमें अंदर के आकार बदलने के लिए आकार बदलने के लिए होता है। तो अंदरूनी resizables वास्तव में नष्ट नहीं हो रहे हैं, वे बस गड़बड़ हो रही हैं।

आप पुन: प्रयोज्य स्रोत कोड here देख सकते हैं; यह लाइन 199 पर हो रहा है जहां यह .find('.ui-resizable-handle').remove(); कहता है।

इसे ठीक करने के लिए आपको आंतरिक resizables पर भी नष्ट विधि को कॉल करने की आवश्यकता है और फिर उन्हें पुन: बनाएँ। (jsfiddle)

$("div").resizable(); 

// Destroy all three resizables 
$("div").resizable("destroy"); 

// Recreate the inner resizables 
$("#idInnerOne, #idInnerTwo").resizable(); 

आप ऐसा करने के लिए कि बाइंडिंग और डेटा निर्माण पर आकार बदलने योग्य सेट, अन्यथा यह जब आप इसे फिर से बनाने का प्रयास करें सोचेंगे कि अपनी पहले से बनाए हटाने की जरूरत है और यह कुछ भी नहीं होगा।

आप इसे नष्ट करने के बजाय बाहरी आकार बदलने योग्य को अक्षम करने पर भी विचार कर सकते हैं, लेकिन has its own issues

+2

धन्यवाद जस्टिन। संभवतः .find को बजाय .children ("। Ui-resizable-handle") होना चाहिए। हटाएं(); – Nigel