1

我想在单击按钮时更改输入的类型,但它不起作用。我试过这个:

$('.addPhoto').click(function(){
 $(this).siblings('.auto_image').prop("type", "file");
});

它根本没有做任何事情。我在谷歌上搜索并遇到了这个: 用jQuery改变输入字段的类型

它说可以使用直接 DOM 来完成,但是我将如何选择具有 DOM 的兄弟姐妹的类?

4

3 回答 3

3

您可以一起替换元素,但我认为您不能只更改 type 属性,请参见我的示例。

$('.addPhoto').on("click",function(){
    $(this).off("click").replaceWith("<input type='file' class='addPhoto'/>");
});

或者

$('.addPhoto').one("click",function(){
    $(this).replaceWith("<input type='file' class='addPhoto'/>");
});

http://jsfiddle.net/ECzP4/

这是replaceWith() http://api.jquery.com/replaceWith/的 jQuery 文档

于 2013-08-15T14:37:31.200 回答
1

要获取 dom 对象,只需从 jQuery 集合中获取第一项:

var domObject = $(this).siblings('.auto_image')[0]

虽然它似乎无法从更改textfile- http://jsfiddle.net/7HTgA/

所以我建议有两个输入,并根据需要显示/隐藏它们,而不是尝试更改单个输入的类型。

于 2013-08-15T14:28:52.370 回答
0

将其所有同级添加auto_image到类型为 - 文件的类中。

$(this).siblings('.auto_image').attr('type','file')
于 2013-08-15T14:33:54.490 回答