मेरे पास जो समस्या है वह यह है कि dragleave
किसी तत्व की घटना को उस तत्व के बाल तत्व को मँडराते समय निकाल दिया जाता है। साथ ही, dragenter
मूल तत्व को वापस मँडराते समय निकाल नहीं दिया जाता है।
मैंने एक सरलीकृत फिडेल बनाया: http://jsfiddle.net/pimvdb/HU6Mk/1/ ।
HTML:
<div id="drag" draggable="true">drag me</div>
<hr>
<div id="drop">
drop here
<p>child</p>
parent
</div>
निम्नलिखित जावास्क्रिप्ट के साथ:
$('#drop').bind({
dragenter: function() {
$(this).addClass('red');
},
dragleave: function() {
$(this).removeClass('red');
}
});
$('#drag').bind({
dragstart: function(e) {
e.allowedEffect = "copy";
e.setData("text/plain", "test");
}
});
यह क्या करना चाहिए, div
जब उपयोगकर्ता को वहां कुछ खींचते समय ड्रॉप को लाल करके सूचित किया जाता है । यह काम करता है, लेकिन अगर आप p
बच्चे में खींचते हैं , तो dragleave
निकाल दिया जाता है और div
अब लाल नहीं होता है। ड्रॉप पर वापस जाना div
भी इसे फिर से लाल नहीं करता है। यह पूरी तरह से ड्रॉप से बाहर निकलने div
और इसे फिर से लाल करने के लिए इसमें वापस खींचने के लिए आवश्यक है ।
क्या dragleave
बाल तत्व में घसीटते हुए गोलीबारी से रोकना संभव है ?
2017 अपडेट: टीएल; डीआर, सीएसएस देखें pointer-events: none;
जैसा कि आधुनिक ब्राउज़रों और आईई 11 में काम करने वाले @ एचडी के जवाब में नीचे वर्णित है।
dragleave
उस मामले में अभी भी निकाल दिया गया है।