2012-03-08 85 views
0

下面是我顯示文件輸入和「清除文件」按鈕的jQuery代碼的一部分。如何清除單個文件輸入?

var $imagefile = $('<input />') 
    .attr({ 
     type: 'file', 
     name: 'imageFile', 
     class: 'imageFile' 
    }); 

$image.append($imagefile); 

var $imageclear = $('<input />') 
    .attr({ 
     type: 'button', 
     name: 'imageClear', 
     class: 'imageClear', 
     value: 'Clear File' 
    }); 

$(".imageClear").click(function(event){ 
    event.preventDefault(); 
    $(".imageFile").replaceWith("<input type='file' class='imageFile' />"); 
}); 

現在,如果你看一下jQuery代碼的底部,它顯示了我使用的功能中,如果用戶點擊「清除文件」按鈕,它將替換文件的輸入,因此如果您已經選擇了一個文件,但然後想清除輸入,然後通過替換輸入來完成。

雖然問題是讓我說我​​有兩個「imageFile」輸入(每個文件輸入包含它自己的「清除文件」按鈕「,它們都包含一個文件,然後可以說我想清除第一個文件輸入,當我點擊「清除文件」按鈕時,它清除了兩個文件輸入,即使我只希望它清除一個文件輸入。那麼如何編碼它,以便每個「清除文件」按鈕只清除文件輸入屬於

+0

可能重複的[如何清除文件輸入](HT tp://stackoverflow.com/questions/9617738/how-to-clear-file-input) – 2012-03-08 13:01:01

+0

你不應該爲此創建一個新的問題。澄清你的原始一個。你要求的是如何找到相對於另一個節點的某個節點。這取決於您的DOM的實際結構。 jQuery提供了很多DOM遍歷方法,你只需要找到合適的。 http://api.jquery.com/category/traversing/ – 2012-03-08 13:01:28

+0

您需要一種方法來識別來自按鈕的正確輸入,或者遍歷DOM或使用其他方法(如獨特的類,存儲輸入的ID作爲按鈕的'data- *'屬性等)。 – 2012-03-08 13:05:13

回答

2

假設輸入和按鈕在相同的容器內(es.div),把上面一行:

$(this).parent().find(".imageFile").replaceWith("<input type='file' class='imageFile' />"); 
+0

這工作完美,謝謝:) – user1181690 2012-03-08 13:20:04