ファイルのドラッグ/ドロップ ハンドラーを作成しようとしています (ファイルをブラウザー ウィンドウにドラッグして、アップロードに使用します)。
何らかの理由で、ドラッグ/ドロップ リスナーを本体で$("body")
はなくにバインドする$("div")
と、イベントが連続して数回発生し、場合によってはノンストップ (一見ループ) になることもあります。何が原因でしょうか?
コードの縮小版を次に示します: http://jsfiddle.net/WxMwK/9/
var over = false;
$("body")
.on("dragover", function(e){
e.preventDefault();
if (! over) {
over = true;
$("ul").append($("<li/>").text("dragover"));
}
})
.on("dragleave", function(e){
e.preventDefault();
if (over) {
over = false;
$("ul").append($("<li/>").text("dragleave"));
}
})
.on("drop", function(e){
e.preventDefault();
if (over) {
over = false;
$("ul").append($("<li/>").text("drop"));
}
});
テストするには: ファイルをオレンジ色の領域にドラッグすると、イベントが連続して複数回発生することがわかります。