想象一下,我试图实现这个目标:
用户将看到完成上传照片的结果,如果第一张图片存在,请附加到第二张图片,依此类推。但是我的代码存在缺陷,它将一张照片附加到所有div
。我的逻辑出了什么问题?
$("#photo_area div").each(function(i, obj) {
i++;
var stopLoop = false;
if (!$(obj).attr('style') && stopLoop == false) {
$(obj).attr('style', 'background:url(http://example.com/' + encodeURI(data.file_name) + ') no-repeat center center');
$('input[name="photos' + i + '"]').val(encodeURI(data.file_name));
stopLoop = true;
}
});
我的DOM
<div id="photo_area">
<div></div>
<div></div>
<div></div>
<div></div>
<input type="hidden" name="photo1">
<input type="hidden" name="photo2">
<input type="hidden" name="photo3">
<input type="hidden" name="photo4">
</div>
我创建了一个示例,使用颜色作为示例:https://jsfiddle.net/m4orLzpr/
答案 0 :(得分:1)
如果您想在未上传列表中的图片时停止循环,可以通过为else
条件编写if
语句并将stopLoop=true;
移至else
来执行此操作。 var stopLoop=false;
语句并在循环外移动stopLoop
。否则,不会使用<%= render partial: 'listings/comment', collection: @listings = @listing.comments.reverse.paginate(:page => params[:page], :per_page => 10) %>
变量。
答案 1 :(得分:0)
$.each()
功能。
https://jsfiddle.net/rcprfq07/
PS:使用jsfiddle徽标图片以简化示例
结果:
<div id="photo_area">
<div style="background:url(https://jsfiddle.net/img/logo.png) no-repeat center center"><input type="hidden" name="photos1" value="https://jsfiddle.net/img/logo.png"></div>
<div style="background:url(https://jsfiddle.net/img/logo.png) no-repeat center center"><input type="hidden" name="photos2" value="https://jsfiddle.net/img/logo.png"></div>
<div style="background:url(https://jsfiddle.net/img/logo.png) no-repeat center center"><input type="hidden" name="photos3" value="https://jsfiddle.net/img/logo.png"></div>
<div style="background:url(https://jsfiddle.net/img/logo.png) no-repeat center center"><input type="hidden" name="photos4" value="https://jsfiddle.net/img/logo.png"></div>
</div>
答案 2 :(得分:0)
检查Cordova 4.0.0 documentation 那是你在找什么?
使用以下选择器:
$("#photo_area div:not([style]):first")
首先选择所有没有样式属性的div,然后从该列表中选择第一个div。
修改强> 参考https://jsfiddle.net/vnathalye/m4orLzpr/5/ 知道如何在隐藏字段中放入相同的值。我在小提琴中使用普通文本框来查看更新的值。