设置用户每次上传的图像背景

时间:2016-01-15 07:38:10

标签: javascript jquery

想象一下,我试图实现这个目标:

用户将看到完成上传照片的结果,如果第一张图片存在,请附加到第二张图片,依此类推。但是我的代码存在缺陷,它将一张照片附加到所有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/

3 个答案:

答案 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()功能。 <input>。

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/ 知道如何在隐藏字段中放入相同的值。我在小提琴中使用普通文本框来查看更新的值。