Document.on.dragover被不相关的代码破坏了

时间:2017-03-23 15:56:24

标签: javascript jquery

我的javascript文件是here。基本上我的网站是一个命令提示式网站,我输入命令来执行文件上传等特定功能。我还有一个“拖放”上传功能,如下所示:

$(document).on('dragover', 'body', function(e) {
    e.preventDefault();
    $("#fileupload").addClass('ishovered');
    $(".dragtext").show();
});
$(document).on('dragleave', 'body', function(e) {
    $("#fileupload").removeClass('ishovered');
    $(".dragtext").hide();
});
$(document).on('drop', 'body', function(e) {
    $("#fileupload").removeClass('ishovered');
    $(".dragtext").hide();
});

现在这在网站加载上运行正常。但在我运行这个看似无关的代码之后:

[...]
} else if (value.match("^clear") || value.match("^cls")) {
    if ($(".isup").attr("value") == "tr") {
        $("#container").append("<span class='code'>" + value + "</span><span class='cmd-cont'>error: please answer yes/no first</span>");
        updateScroll();
    } else {
        $("#container").html(""); /* This is what usually runs, and for some reason breaks the drag & drop upload */
    }
}
[...]
function updateScroll() {
    var element = document.getElementById("container");
    element.scrollTop = element.scrollHeight;
}

由于某些原因,运行此代码打破了拖累和放大drop upload,因为在该代码执行后,网站不会响应正在盘旋的文件。

Live demo(您可以在加载后尝试拉入并输入网站,然后键入“cls”或“clear”然后尝试再次拖动文件来重新创建)

1 个答案:

答案 0 :(得分:1)

$("#container").html("");销毁#fileupload表单(因为它是#container的孩子)