Spero che questo possa aiutarti anche se non è una brace, forse puoi farne uso. Ho avuto un bel po 'di esperienza di trascinamento di HTML5 ed è un po' fastidioso, ma se vuoi cose interessanti come il trascinamento della finestra incrociata, merita lo sforzo che penso.
var ignoreNextLeave = false;
$("#outerDragTarget").on("dragenter", function(ev) {
// not interested in dragleaves from my children...
if (ev.target !== this) {
ignoreNextLeave = true;
}
$(this).addClass("dragover");
}).on("dragleave", function(ev) {
if (ignoreNextLeave) {
ignoreNextLeave = false;
return;
}
$(this).removeClass("dragover");
});
$("#innerDragTarget").on("dragleave", function(ev) {
ev.stopPropagation();
});
Puoi eseguirlo qui
Il trucco è annullare la propagazione di dragleaves dall'elemento interno e notare che quando la trascinamento di entrata si accende sul genitore e il bersaglio non è il genitore, stiamo per ottenere un congedo di trascinamento non ci interessa. Non ideale ma esso Potrebbe essere preso in considerazione in qualcosa che si può sperare di usare.