2012-05-22 19 views
11

पर ड्रैगगेबल को संलग्न करें jQueryUI के ड्रैगगेबल्स/ड्रॉपबेल का उपयोग करके ड्रॉप पर लक्षित तत्व पर खींचा जा रहा आइटम कैसे लगाया जाए? ऐसा लगता है कि जिस तरह से jQuery यूआई काम करता है, यह सिर्फ पूर्ण स्थिति के माध्यम से स्क्रीन पर चारों ओर आइटम को स्थानांतरित करता है। दुर्भाग्यवश, यह कार्यक्षमता फ़ॉर्म सबमिशन बेकार बनाती है, क्योंकि आप सबमिशन पर मानों की स्थिति नहीं प्राप्त कर सकते हैं।JQuery UI - Droppable

किसी भी आइटम/पॉइंटर्स के लिए अग्रिम धन्यवाद!

+1

मेरे अनुभव में पर कार्य करना उदाहरण, यह वास्तव में डोम नई स्थिति को प्रतिबिंबित करने के संशोधित करता है; मुझे पता है क्योंकि मैं इसके साथ सूचियां (AJAX के माध्यम से) अद्यतन करता हूं और इसमें 'पूर्ण' कॉलबैक में नए div ऑर्डर को स्कैन करना शामिल है। तुम क्या करने की कोशिश कर रहे हो? – Sp4cecat

+0

आप वास्तव में क्या करने की कोशिश कर रहे हैं? ऐसा लगता है कि आप ड्रैगगबल के बजाय क्रमबद्ध खोज रहे हैं: http://jqueryui.com/demos/sortable/ –

उत्तर

23

यदि मैं सही ढंग से समझ गया, तो आप चाहते हैं कि ड्रैग किए गए तत्व को इसके वर्तमान माता-पिता से अलग किया जाए और नए में जोड़ा जाए, है ना? आप ड्रैगिंग करने के लिए एक सहायक का उपयोग कर सकते हैं (इसलिए मूल तत्व प्रभावित नहीं होता है) और, ड्रॉप पर, इसे अलग करें और इसे लक्ष्य में संलग्न करें (धन्यवाद @ ओलेग और @Brian मेरे मूल उत्तर में सुधार के लिए)।

$(myDraggable).draggable({ 
    helper:"clone", 
    containment:"document" 
}); 

$(myDroppable).droppable({ 
    drop:function(event, ui) { 
     ui.draggable.detach().appendTo($(this)); 
    } 
}); 

jsFiddle

+0

आपकी मदद के लिए धन्यवाद mgibsonbr! मैं वास्तव में यह लिखने के लिए आपके द्वारा उठाए गए समय और प्रयास की सराहना करता हूं! – user1110302

+0

यह बहुत उपयोगी है, धन्यवाद –

+2

इसके लिए आपको किसी भी वैश्विक चर का उपयोग करने की आवश्यकता नहीं है - ui.helper आपकी draggable jq ऑब्जेक्ट है। आप स्टार्ट/स्टॉप विधियों से छुटकारा पा सकते हैं, और ड्रॉप पर यह ui.helper.detach() होना चाहिए। संलग्न करें ($ (यह))। – Oleg