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 に答える