2013-05-09 77 views
0

我正在使用plUpload庫的項目。查找阻止所有其他人的Javascript事件

當我使用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。一旦我移除了皮膚,它就可以正常工作。

+0

整個頁面上的透明div會使與頁面交互變得困難。 – 2013-05-09 15:10:06

+0

普通鏈接仍然有效嗎? – Barmar 2013-05-09 15:10:07

+0

@Barmar是的。 – yakatz 2013-05-09 16:13:51

回答

2

從您的評論看,您的上傳回調聽起來像只是將服務器的響應盲目轉儲到頁面中。如果服務器的響應是HTML響應,請確保它不包含任何可能會破壞頁面的腳本標記。我發現在網站使用模板系統的情況下會發生這種情況,該模板系統會自動將網站模板中的所有輸出包裹在內,除非特別指出。當開發人員忘記這麼做時,上傳回調包含了一個新的jQuery副本,並清除了所有的點擊事件。

+0

就是這樣。我會用相關的代碼更新我的問題。 – yakatz 2013-05-09 19:40:26

相關問題