2017-03-13 41 views
0

我附上图片到我的div使用该代码:如何删除图标添加到图像附加

$(function() { 

var imagesPreview = function(input, placetoinsert) { 

    if (input.files) { 
     var filesAmount = input.files.length; 

     for (i = 0; i < filesAmount; i++) { 
      var reader = new FileReader(); 
      if (i>=5) { 
       break; 
      } 
      reader.onload = function(event) { 
       $($.parseHTML('<img>')).attr('src', event.target.result).appendTo('.preview').addClass('added_images'); 

      } 
      reader.readAsDataURL(input.files[i]); 
     } 
    } 
}; 

$('#gallery-photo-add').on('change', function() { 
    imagesPreview(this, 'div.gallery'); 
}); 
}); 

图片我从输入文件场得到我的观点。现在我想为每个图像添加另一个图像,如“删除”。 ?我该怎么办,我的DIV现在是空的:

<div class="preview"> 

      </div> 

回答

0

我会简单地创建所需的HTML,而只使用这样的事:

$($.parseHTML('<div class="someClass">close</div>')).appendTo('.preview'); 

然后就是听

$('.someClass').click(function(){ 
    // do stuff 
}); 
+0

但这段代码在我之前附加的图像附近创建元素。我需要在我之前附加的图像上添加一些图像。 – rostyslav

+0

因此,您需要在打印到屏幕后在图像上打印十字图案? –

+0

我需要像每个图像的删除图标。我只能为上传的图片执行此操作。也许,我只需要添加一些样式的img?我试图使用位置:相对和绝对的图像,但它不起作用。所有的图像在div中的一个图像。 – rostyslav

0

如果您希望关闭图标/按钮是可点击的,您可能需要用div来包装图片,然后添加一个按钮,然后使用CSS进行样式设计。

这里的示例:

var imagesPreview = function(input, preview) { 
 

 
    if (input.files) { 
 
    var filesAmount = input.files.length; 
 

 
    for (i = 0; i < filesAmount; i++) { 
 
     var reader = new FileReader(); 
 
     if (i >= 5) { 
 
     break; 
 
     } 
 
     reader.onload = function(event) { 
 
     var img = "<img src='" + event.target.result + 
 
      "'>", 
 
      height = $($.parseHTML(img))[0].naturalHeight, 
 
      width = $($.parseHTML(img))[0].naturalWidth, 
 
      imgSpan = "<div style='height:" + height + 
 
      "px;position: relative;width: " + width + 
 
      "px;'><button class='btn-close'>X</button>" + img + 
 
      "</div>"; 
 

 
     $($.parseHTML(imgSpan)).appendTo(preview); 
 
     } 
 
     reader.readAsDataURL(input.files[i]); 
 
    } 
 
    } 
 
}; 
 

 
$('#btn-gllry-add').on('change', function() { 
 
    imagesPreview(this, 'div.gallery'); 
 
}); 
 

 
$(document).on('click', '.btn-close', function() { 
 
    $(this).parent().remove(); 
 
    $('#btn-gllry-add').val(""); 
 
});
.btn-close { 
 
    background-color: #5a5a5a; 
 
    border: 0; 
 
    border-radius: 999px; 
 
    color: #fff; 
 
    height: 2em; 
 
    line-height: 1em; 
 
    margin: 0 auto; 
 
    padding: 0; 
 
    position: absolute; 
 
    right: 0; 
 
    width: 2em; 
 
} 
 

 
.btn-close:link, 
 
.btn-close:visited, 
 
.btn-close:hover, 
 
.btn-close:active { 
 
    background-color: #000; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<label>Upload Image: </label> 
 
<input id="btn-gllry-add" type="file" name="file"/> 
 
<div class="gallery"></div>

也更新.appendTo(preview);所用的传递的参数。以前您的代码没有使用placetoinsert(在我的示例中重命名为预览),因为.preview是硬编码的。

+0

它的优点,但首先:所有图像转到1,他们像一个图像和删除图像工作奇怪。当我点击“删除”删除所有文件时,我是否可以删除只选择的图像? – rostyslav

+0

我没有添加'multiple',所以只允许一个文件。我会看看我能做什么。 – thekodester

+0

请阅读:http://stackoverflow.com/a/32133956/7008561或http://stackoverflow.com/a/11173419/7008561或http://stackoverflow.com/a/3162319/7008561 – thekodester