2012-03-08 82 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