我尝试根据HTML src
更改img
的{{1}}。
标记如下(请注意,对于调试我将id设置为第二个图像,id为" test")。
file input
这是JavaScript代码:
<div class="row">
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img id='test' class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
</div>
它有效,但它有$(".editbtn").click(function(){
$(this).parent().find(".file-input").trigger("click");
});
$(".file-input").change(function(event){
var selectedFile = event.target.files[0];
var reader = new FileReader();
var imgtag = document.getElementById("test");
imgtag.title = selectedFile.name;
reader.onload = function(event) {
imgtag.src = event.target.result;
};
reader.readAsDataURL(selectedFile);
});
,如果我更改了这一行,它就不起作用:var imgtag = document.getElementById("test");
也许这不是最佳的jquery选择器,但我认为是一个正确的选择器。
出了什么问题?
答案 0 :(得分:1)
如果您使用var imgtag = $(this).parent().parent().find(".thumb")
,则imgtag
变量是jquery
对象,而不是对DOM
对象的引用,因此您无法使用imgtag.src
1}}。
这里有两个选项:
imgtag[0].src = event.target.result
attr
功能:imgtag.attr('src', event.target.result)
答案 1 :(得分:1)
您可以使用.parent()
,.prev()
和"img"
作为参数来返回jQuery对象,然后使用[0]
来引用DOM
元素
var imgtag = $(this).parent().prev("img")[0];
或html
树是否保持不变
var imgtag = this.parentElement.previousElementSibling;
注意,imgtag
引用DOM
元素,而不是jQuery对象;其中title
和src
是DOM
元素属性
imgtag.title = selectedFile.name;
imgtag.src = event.target.result;
$(".editbtn").click(function(){
$(this).parent().find(".file-input").trigger("click");
});
$(".file-input").change(function(event){
var selectedFile = event.target.files[0];
var reader = new FileReader();
var imgtag = $(this).parent().prev("img")[0];
imgtag.title = selectedFile.name;
reader.onload = function(event) {
imgtag.src = event.target.result;
};
reader.readAsDataURL(selectedFile);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img id='test' class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
<div class="col-md-3">
<img class='thumb' src='../images/placeholder.jpg'>
<div>
<input type="file" class='file-input' />
<button class="btn btn-primary editbtn">EDIT</button>
</div>
</div>
</div>