2014-07-10 92 views
0

我有以下的jQuery代碼:ReplaceWith jQuery的不工作

$("#file-upload").change(function() { 
    if (this.files && this.files[0]) { 
     $('#cancel-image-upload').html('<button type="button" class="btn btn-warning" id="cancel-upload-button" style="margin-right:15px;">cancel</button>'); 
    } 
    else 
     $("#image-preview").attr("src", "http://placehold.it/200x150"); 
}); 


$('#cancel-upload-button').click(function() { 
     $("#file-upload").replaceWith('<input type="file" id="file-upload" name="file" accept="image/*">'); 
    }); 

這段代碼的作用是顯示取消按鈕的文件已被選定後,按鈕應能點擊時將其刪除。我嘗試了上面的代碼,但由於某種原因它不起作用。爲什麼以及如何修復它?謝謝!

+0

就像你以前用過的那樣,你是否嘗試過直接使用'.html'而不是'replaceWith'。 – j809

+0

@ j809是的,它不起作用 –

回答

2

嘗試

$(document.body).on('click', '#cancel-upload-button', function() { 
    $("#file-upload").replaceWith('<input type="file" id="file-upload" name="file" accept="image/*">'); 
}); 

您需要現場以保持取消按鈕事件綁定,因爲你從DOM在#文件上傳變化()回調中刪除。

+0

#file-upload的綁定當然也是如此,因爲它被動態替換。 – wiesion

0

添加#取消上傳按鈕的點擊處理程序剛剛添加控制後,即在if循環內。