2011-11-25 18 views
14

के बाद ड्रैग किए गए तत्व को हटाकर मैं देशी का उपयोग कर रहा हूं एपीआई जावास्क्रिप्ट में खींचें। सफल ड्रॉप के बाद मैं डीओएम से ड्रैग किए गए तत्व को कैसे हटा सकता हूं?जावास्क्रिप्ट ड्रैग और ड्रॉप: सफल ड्रॉप

  • मैं ड्रॉप घटना को सुन की कोशिश की है, लेकिन यह केवल तत्व है जो पर डाला जाता है और तत्व के लिए कोई संदर्भ है घसीटा जा रहा है पर निकाल दिया जाता।
  • मैंने को तत्व खींचने का प्रयास किया है, लेकिन यह मुझे यह नहीं बताता कि कोई बूंद सफल है या नहीं।
  • मैं वैश्विक चर में खींचने वाले तत्व को संग्रहीत करने से बचने की कोशिश कर रहा हूं क्योंकि इससे अलग-अलग टैब या ब्राउज़र के बीच ड्रैग होता है, इससे समस्याएं उत्पन्न हो सकती हैं। http://jsfiddle.net/KNG6n/3/

    पत्र जो बॉक्स में घसीटा जा सकता है की एक सूची:

यहाँ एक उदाहरण है। जब बॉक्स पर एक पत्र का नोड गिरा दिया जाता है, तो मैं इसे सूची से हटा देना चाहता हूं (उसी पत्र वाले किसी भी अन्य सूची आइटम को प्रभावित किए बिना)

उत्तर

11

dragend घटना के लिए सुनो और घसीटा तत्व के साथ कुछ भी करने से पहले DataTransfer वस्तु की dropEffect चर की जाँच करें:

htmlElement.addEventListener('dragend', function(event){ 
    if(event.dataTransfer.dropEffect !== 'none'){ 
     $(this).remove(); 
    } 
}); 
+0

स्पष्ट रूप से ड्रॉप पर प्रभाव हमेशा विंडोज़ पर क्रोम में नहीं होगा, बग रिपोर्ट वर्षों से खुली है: https://code.google.com/p/chromium/issues/detail?id=39399 – marcelj

0

एक तरीका यह है कि इसे एक चर के लिए स्केल किया गया है ड्रैगस्टार्ट, और गिराए जाने पर उस तत्व का उपयोग करें।

See this fiddle.

+0

मैं तत्व भंडारण से बचने के लिए कोशिश कर रहा हूँ एक में घसीटा जा रहा है वैश्विक चर के रूप में यदि विभिन्न टैब या ब्राउज़र के बीच एक ड्रैग होता है तो इससे समस्याएं उत्पन्न हो जाएंगी। – lucas

4

इसके अलावा इस उदाहरण पर एक नज़र डालें: http://html5demos.com/drag

वर एल = document.getElementById (e.dataTransfer.getData ('पाठ'));

el.parentNode.removeChild(el); 
+0

यह समाधान केवल तभी काम करता है जब सभी तत्वों में ids (जो मेरा नहीं है)। साथ ही, इसका मतलब है कि आपको डेटा को कुछ उपयोगी के बजाय आईडी सेट करना होगा। – lucas

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