2014-10-22 7 views
5

के बजाय ड्रॉप तत्व आईडी प्राप्त करें मैं jQuery के लिए बिल्कुल नया हूं और छवि तत्व स्वयं या ड्रॉप लक्ष्य आईडी के बजाय ड्रॉप लक्ष्य में संलग्न करने के लिए एक ड्रैग किए गए छवि तत्व आईडी प्राप्त करने की कोशिश कर रहा हूं। मैं html5 देशी डीएनडी का उपयोग कर रहा हूँ। और अब तक मैं ड्रैग फ़ंक्शन में डेटाट्रैंसर विधि और ड्रॉप में गेटडाटा फ़ंक्शन के साथ अपनी आईडी को भेजकर तत्व को जोड़ सकता हूं। जब भी मैं उस आईडी को ड्रॉप से ​​कॉल करने का प्रयास करता हूं, हालांकि इसे ड्रैग किए गए तत्वों के बजाय ड्रॉप लक्ष्य आईडी प्राप्त होता है।ड्रॉप लक्ष्य आईडी

किसी भी मदद की बहुत सराहना की जाएगी क्योंकि मैंने पूरी तरह से ऑनलाइन खोज की है और ड्रॉप क्षेत्र की लक्षित आईडी प्राप्त करने के लिए और अधिक तरीकों के अलावा कुछ भी नहीं मिला है।

function allowDrop(ev) { 
ev.preventDefault(); 
} 

function dragStart(ev) { 

ev.dataTransfer.setData('Text/html', ev.target.id); // sends the dragged images data. 

//alert(ev.target.id); // alerts the correct id of the dragged image. 

} 


function drop(ev) { 

ev.preventDefault(); 
var data = ev.dataTransfer.getData("text/html");//retrieves dropped images data. 
ev.target.appendChild(document.getElementById(data));//this displays the dropped image. 

//alert(ev.target.id); // alerts the id of the drop target(Want to get the dropped images id.) 

//$("#mybillets").append("<span>"+ev.target.id+" </span>"); //appends the drop targets id(Want to append the dropped images id.) 
} 
+1

'elem', तो आईडी बस' elem.id' है। – jfriend00

+0

उस मामले में 'डेटा' आपको –

+0

देना चाहिए कि मैं इसे कैसे कार्यान्वित कर सकता हूं? मेरे सिर को तले हुए कई अलग-अलग चीजों की कोशिश कर रहे थे। – Jason

उत्तर

9

drop विधि में ev की तरह लग रहा है घटना वस्तु है, तो ev.target तत्व है जिस पर आइटम हटा दिया गया था के पास भेजेगा: यहाँ मेरे वर्तमान कोड बेला का एक टुकड़ा है।

तो ड्रॉप लक्ष्य आईडी का संदर्भ देने के लिए ev.target.id का उपयोग करें।

function allowDrop(ev) { 
 
    ev.preventDefault(); 
 
} 
 

 
function drag(ev) { 
 
    ev.dataTransfer.setData('Text/html', ev.target.id); 
 
} 
 

 
function drop(ev, target) { 
 
    ev.preventDefault(); 
 
    console.log(target.id, ev.target.id) 
 

 
    var data = ev.dataTransfer.getData("text/html"); 
 
    alert(data) 
 
}
#div1 { 
 
    width: 350px; 
 
    height: 70px; 
 
    padding: 10px; 
 
    border: 1px solid #aaaaaa; 
 
}
<div id="div1" ondrop="drop(event, this)" ondragover="allowDrop(event)"></div> 
 
<br/> 
 
<img id="drag1" src="//placehold.it/336X69/ff0000" draggable="true" ondragstart="drag(event)" width="336" height="69" />

+1

मैं वास्तव में ड्रैग किए गए छवि की आईडी को प्रदर्शित करने की कोशिश कर रहा हूं और ड्रॉप लक्ष्य नहीं, मैंने अपने कोड को थोड़ा सा बेहतर तरीके से संपादित करने के लिए संपादित किया है जो मैं करने की कोशिश कर रहा हूं। ev.target.id उस तत्व को संदर्भित करता है जिसने घटना को निकाल दिया, जो ड्रॉप इवेंट के मामले में, उस क्षेत्र को संदर्भित करता है जिसमें छवि को गिराया जा रहा है। मैं उस छवि की आईडी प्राप्त करना चाहता हूं जिसे बदले जा रहा है। – Jason

+0

@ जेसन अपडेट का प्रयास करें ... इसे 'drag1' –

+0

चेतावनी देना चाहिए, यह अब काम कर रहा है ..धन्यवाद! यह अब सही आईडी जोड़ रहा है। – Jason

0

@Arun पी जॉनी के लिए धन्यवाद। इस सरल उदाहरण पर उत्कृष्ट काम।

हालांकि, मैं बस यह जोड़ना चाहता था कि यदि आप "ए" टैग से कोशिश करते हैं और खींचते हैं, तो आपको बहुत भाग्य नहीं होगा।

यह नहीं काम करेगा (सभी ब्राउज़रों में):

<a draggable="true" ondragstart="drag(event)" id="drag1" href="#"> 
<img src="//placehold.it/336X69/ff0000" width="336" height="69" /> 
</a> 

हालांकि इस (अधिक ब्राउज़रों में) काम करेगा:

<img draggable="true" ondragstart="drag(event)" id="drag1" src="//placehold.it/336X69/ff0000" width="336" height="69" /> 

यह मैं इस बाहर की खोज के लिए काफी समय लगा , क्योंकि कई ब्राउज़र वापस नहीं आते हैं या आपको खींचने वाले चीज़ों की स्रोत आईडी प्राप्त करने देते हैं। यह उदाहरण सांत्वना एक चेतावनी में आप के लिए स्रोत आईडी प्रकट है और यह भी चाहिए: आप नाम के एक चर में डोम तत्व है, तो

<script> 
    function allowDrop(ev) { 
     ev.preventDefault(); 
    } 

    function drag(ev) { 
     ev.dataTransfer.setData('text', ev.target.id); 
    } 

    function drop(ev, target) { 
     ev.preventDefault(); 
     console.log(target.id + " : " + ev.target.id) 
     console.log(ev.dataTransfer.getData("text/html")); 
     console.log(ev.dataTransfer.getData("text")); 
     var data = ev.dataTransfer.getData("text"); 
     alert(data) 
    } 
</script> 
<style "type="text/css"> 
     #div1 
     { 
      width: 350px; 
      height: 70px; 
      padding: 10px; 
      border: 1px solid #aaaaaa; 
     } 
</style> 

<div id="div1" ondrop="drop(event, this)" ondragover="allowDrop(event)"></div> 
<br/> 
<img id="drag1" src="http://placehold.it/336X69/ff0000" draggable="true" ondragstart="drag(event)" width="336" height="69" /> 
+0

अब यह इस jsfiddle में स्थापित है: https://jsfiddle.net/tqk3b745/ –

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