मेरे पास जो समस्या है वह यह है कि 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उस मामले में अभी भी निकाल दिया गया है।