0

我正在开发一个使用 plUpload 库的项目。

在我使用 plUpload 上传文件后,页面上的所有其他 jQuery 事件都停止工作(包括我的下拉菜单、DataTables 和其他一些带有 的元素.live("click")。

我花了很多时间在 Chrome 控制台中单步执行脚本,但没有发现任何会导致问题的东西。

我认为整个代码在这里发布太多了,所以我正在寻找关于什么会导致这样的事情或在哪里放置断点以帮助解决它的建议。


编辑:根据下面的建议/答案,这是有问题的代码:

uploader.bind('FileUploaded', function(up, file, response) {
    uploadSuccess(file, response.response);
});

function uploadSuccess(fileObj, serverData) {
    var item = jQuery('#upload-item-' + fileObj.id);

    // on success serverData should be numeric, fix bug in html4 runtime returning the serverData wrapped in a <pre> tag
    serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');

    if ( serverData.match(/upload-error|error-div/) ) {
        item.html(serverData);
        return;
    } else {
        jQuery('.progress', item).hide();
        jQuery('.closebtn', item).show();
    }

    [...]
}

serverData被包裹在一个皮肤中,其中包括一个新的实例化调用jQuery。一旦我去除了皮肤,它就可以正常工作。

4

1 回答 1

2

从您的评论中,听起来您的上传回调只是盲目地将服务器的响应转储到页面中。如果服务器的响应是 HTML 响应,请确保它不包含任何可能会干扰您的页面的脚本标签。我已经看到这种情况发生在站点使用模板系统的情况下,该模板系统会自动将所有输出包装在站点模板中,除非明确指示不要这样做。当开发人员忘记这样做时,上传回调包括一个新的 jQuery 副本并清除所有点击事件。

于 2013-05-09T17:26:22.727 回答