2009-09-29 15 views
7

मैं एक सरल jQuery मिल गया है एक सूची के आधार पर क्रमित करने योग्य इस प्रकार है:jQuery sortable आइटम ऊंचाई

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
</ul> 

मैं एक सहायक समारोह बना लिया है ताकि क्या एक आइटम की सामग्री को हो सकता है की परवाह किए बिना, सहायक हमेशा एक ही निश्चित आकार है।

मेरी समस्या यह है कि यदि मैं ऐसी वस्तु खींचता हूं जिसमें बहुत सारी सामग्री है (टेक्स्ट के कई अनुच्छेद कहते हैं), भले ही मेरा सहायक ऊंचाई में केवल एक पंक्ति है, तो आइटम नीचे तक आइटम पर नहीं गिर जाएगा मेरे आइटम की कम से कम मूल ऊंचाई यात्रा की है।

उदाहरण के लिए:

<ul> 
    <li>Item 1 
    line2 
    line3 
    line4 
    line5 
    </li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
</ul> 

अगर मैं ITEM1 खींचें मेरी सहायक एक ही पंक्ति में इस बदल जाता है - अच्छा और खींचें करने के लिए आसान। हालांकि, आइटम 2 और आइटम 3 के बीच आइटम 1 को छोड़ने से पहले मुझे अभी भी स्क्रीन के नीचे माउस 5 लाइनों को स्थानांतरित करने की आवश्यकता है। एक बार जब मैं इसे पर्याप्त ऊंचाई खींचता हूं तो आइटम काम करता है जैसा कि मैं उम्मीद करता हूं, और अब मुझे इसे मूल ऊंचाई खींचने की आवश्यकता नहीं है।

मैंने उन सभी सॉर्टेबल विकल्पों को आजमाया है जिनके बारे में मैं सोच सकता हूं लेकिन इसका कोई फायदा नहीं हुआ और उम्मीद है कि किसी के पास कोई सुझाव है।

$('#sortable').sortable({ 
    placeholder: 'highlight', 
    axis: 'y', 
    helper: function(event) { 
    return $(this).find('.drag').clone(); 
}, 
}); 

उत्तर

0

आप डिव की वर्तमान ऊंचाई हड़पने सकता घसीटा जा रहा है, एक चर में सहेजने और DIV घसीटा जा रहा है के लिए एक क्रियाशील ऊंचाई असाइन करें। एक बार इसे रखा जाने के बाद, चर के भीतर ऊंचाई को फिर से सौंपने के लिए कॉल का उपयोग करें। (

start: function(event, ui) { 
    $(this).sortable('refreshPositions') 
    }, 

यह के रूप में मैं शुरू लगता है चाल करने के लिए लगता है):

var curHeight = $(div).height(); 

$(div).css({height: 20px;}); 

तुम भी forceHelperSize

25

विचार करने के लिए ज्यादा बाल-फाड़ के बाद मुझे sortable को यह घटना जोड़ा चाहते हो सकता है सहायक के निर्माण के बाद बुलाया जाता है, इसलिए पदों को ताज़ा करने से ऊंचाई को रीसेट किया जाता है। शायद jQuery को यह स्वयं करना चाहिए, लेकिन अभी के लिए मैं खुश हूँ।

+0

तो forceHelperSize (http://jqueryui.com/demos/sortable/#option-forceHelperSize) किसी काम का नहीं था? – jakeisonline

+4

@ जॉन पवित्र बकवास, काश मैं इस +1000 बार ऊपर उठा सकता हूं। – shmeeps

+0

मैं shmeeps से सहमत हूँ! मैं एक पूर्ण नुकसान पर था – orourkedd

3

निम्नलिखित मेरे लिए काम किया:

stop: function(event,ui){ 
    ui.item.height("auto"); 
} 
+0

मेरे लिए भी, मुझे नहीं पता कि यह उल्टा जवाब क्यों नहीं है –

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