【问题标题】:selectedDraggable in image preview在图像预览中选择可拖动
【发布时间】:2016-07-17 17:04:03
【问题描述】:

我想知道如何在我的图像预览中执行 selectedDraggable 我想要做的是将“selectedDraggable”集成到图像预览中,这样我就可以删除我选择的任何图像,而无需擦除预览容器中的所有图像。由于某种原因,我的代码无法正常工作,我无法单击 [X] 删除图像,请帮助谢谢

var inputLocalFont = document.getElementById("image-input");
inputLocalFont.addEventListener("change", previewImages, false);

function previewImages() {
  var fileList = this.files;

  var anyWindow = window.URL || window.webkitURL;

  for (var i = 0; i < fileList.length; i++) {
    var objectUrl = anyWindow.createObjectURL(fileList[i]);
    var imgEl =  $('<img src="' + objectUrl + '" />');
    $('<div class="preview-area"/>').append(imgEl).appendTo('body').draggable();
    imgEl.load(function() {
      $(this).resizable();
    });
    window.URL.revokeObjectURL(fileList[i]);
  }


}
$('.remove-img').click(function (e) {
    $(this).parent().find('img').not(this).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<script  
 src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script><script src="//cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
 <link rel="stylesheet"
href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <link rel="stylesheet"
 href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>

<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<script src="http://circletype.labwire.ca/js/circletype.js"></script><script src="http://tympanus.net/Development/Arctext/js/jquery.arctext.js"></script>

<div id="draggableHelper" style="display:inline-block">
  <input type="file" class="dimmy" id="image-input" multiple />
<span class="remove-img">[x]</span>  
 <span id="image" class="preview-area"style="height:100px; width:200px;" ></span>
</div>
var count = 1;
var selectedDraggable;

ko.bindingHandlers.draggable={
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
    $(element).draggable();
    $(element).addClass('item' + count);
    count++;
    $(element).on('click', function () {
        selectedDraggable = $(this);
    })
}
};

【问题讨论】:

    标签: javascript jquery image


    【解决方案1】:

    此代码$(this).parent() 将返回#draggableHelper,但图像附加到body,这意味着$(this).parent().find('img') 将由空。为了解决这个问题,您可以将图像附加到#draggableHelper

    var inputLocalFont = document.getElementById("image-input");
    inputLocalFont.addEventListener("change", previewImages, false);
    
    function previewImages() {
      var fileList = this.files;
    
      var anyWindow = window.URL || window.webkitURL;
    
      for (var i = 0; i < fileList.length; i++) {
        var objectUrl = anyWindow.createObjectURL(fileList[i]);
        var imgEl = $('<img src="' + objectUrl + '" />');
        $('<div class="preview-area"/>').append('<a class="remove-img"> &times; </a>').append(imgEl).appendTo('body')
          .draggable();
        //^ change to this
        imgEl.load(function() {
          $(this).resizable();
        });
        window.URL.revokeObjectURL(fileList[i]);
      }
    
    
    }
    $('body').on('click', '.remove-img', function(e) {
      e.stopPropagation();
      var parent = $(this).parents('.preview-area');
      parent.find('img').resizable('destroy');
      parent.draggable('destroy').remove();
    });
    .remove-img {
      position: relative;
      top: 0px;
      right: 0px;
      width: 25px;
      height: 25px;
      background-color: #f00;
      font-size: 22px;
      color: #fff;
      text-align: center;
      display: block;
      cursor: pointer;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    
    <script src="http://circletype.labwire.ca/js/circletype.js"></script>
    <script src="http://tympanus.net/Development/Arctext/js/jquery.arctext.js"></script>
    
    <div id="draggableHelper" style="display:inline-block">
      <input type="file" class="dimmy" id="image-input" multiple />
      <span id="image" class="preview-area" style="height:100px; width:200px;"></span>
    </div>

    【讨论】:

    • 怎样才能一个一个地删除而不是同时删除?
    • 请查看更新后的答案!它会在任何添加的图像上方显示一个关闭按钮。
    • 太棒了,谢谢你是最好的谢谢你花时间帮助我
    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 2016-02-29
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多