【问题标题】:codepen.io Profile Image Upload JQuery not workingcodepen.io 个人资料图片上传 JQuery 不起作用
【发布时间】:2022-02-04 16:17:38
【问题描述】:

我无法上传具有多个 ID 的图片

我想根据 id 上传图片,id="firstImage" 不同,id="secondImage" 不同。

我们如何解决这个问题,我认为我们需要修改 Jquery 脚本。

请查看此网址:https://codepen.io/shantikumarsingh/pen/RRmWxo

$(document).ready(function() {

    
    var readURL = function(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('.profile-pic').attr('src', e.target.result);
            }
    
            reader.readAsDataURL(input.files[0]);
        }
    }
    

    $(".file-upload").on('change', function(){
        readURL(this);
    });
    
    $(".upload-button").on('click', function() {
       $(".file-upload").click();
    });
});
body {
  background-color: #efefef;
}

.profile-pic {
    width: 200px;
    max-height: 200px;
    display: inline-block;
}

.file-upload {
    display: none;
}
.circle {
    border-radius: 100% !important;
    overflow: hidden;
    width: 128px;
    height: 128px;
    border: 2px solid rgba(255, 255, 255, 0.2);
    position: absolute;
    top: 72px;
}
img {
    max-width: 100%;
    height: auto;
}
.p-image {
  position: absolute;
  top: 167px;
  right: 30px;
  color: #666666;
  transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
}
.p-image:hover {
  transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
}
.upload-button {
  font-size: 1.2em;
}

.upload-button:hover {
  transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
  color: #999;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/foundation/5.5.3/css/foundation.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<div class="row">
   <div class="small-12 medium-2 large-2 columns" id="firstImage">
     <div class="circle">
       <img class="profile-pic" src="https://t3.ftcdn.net/jpg/03/46/83/96/360_F_346839683_6nAPzbhpSkIpb8pmAwufkC7c5eD7wYws.jpg">

     </div>
     <div class="p-image">
       <i class="fa fa-camera upload-button"></i>
        <input class="file-upload" type="file" accept="image/*"/>
     </div>
  </div>

<div class="small-12 medium-2 large-2 columns" id="secondImage">
     <div class="circle">
       <img class="profile-pic" src="https://t3.ftcdn.net/jpg/03/46/83/96/360_F_346839683_6nAPzbhpSkIpb8pmAwufkC7c5eD7wYws.jpg">

     </div>
     <div class="p-image">
       <i class="fa fa-camera upload-button"></i>
        <input class="file-upload" type="file" accept="image/*"/>
     </div>
  </div>
</div>

【问题讨论】:

    标签: javascript html jquery css


    【解决方案1】:

    你可以这样做:

    $(document).ready(function() {
    
    
      var readURL = function(input) {
        var $this = $(input)
        if (input.files && input.files[0]) {
          var reader = new FileReader();
    
          reader.onload = function(e) {
            $this.closest('.columns').find('.profile-pic').attr('src', e.target.result);
          }
    
          reader.readAsDataURL(input.files[0]);
        }
      }
    
    
      $(".file-upload").on('change', function() {
        readURL(this);
      });
    
      $(".upload-button").on('click', function() {
        $(this).next(".file-upload").click();
      });
    });
    

    演示

    $(document).ready(function() {
    
    
      var readURL = function(input) {
        var $this = $(input)
        if (input.files && input.files[0]) {
          var reader = new FileReader();
    
          reader.onload = function(e) {
            $this.closest('.columns').find('.profile-pic').attr('src', e.target.result);
          }
    
          reader.readAsDataURL(input.files[0]);
        }
      }
    
    
      $(".file-upload").on('change', function() {
        readURL(this);
      });
    
      $(".upload-button").on('click', function() {
        $(this).next(".file-upload").click();
      });
    });
    body {
      background-color: #efefef;
    }
    
    .profile-pic {
      width: 200px;
      max-height: 200px;
      display: inline-block;
    }
    
    .file-upload {
      display: none;
    }
    
    .circle {
      border-radius: 100% !important;
      overflow: hidden;
      width: 128px;
      height: 128px;
      border: 2px solid rgba(255, 255, 255, 0.2);
      position: absolute;
      top: 72px;
    }
    
    img {
      max-width: 100%;
      height: auto;
    }
    
    .p-image {
      position: absolute;
      top: 167px;
      right: 30px;
      color: #666666;
      transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
    }
    
    .p-image:hover {
      transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
    }
    
    .upload-button {
      font-size: 1.2em;
    }
    
    .upload-button:hover {
      transition: all .3s cubic-bezier(.175, .885, .32, 1.275);
      color: #999;
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/foundation/5.5.3/css/foundation.min.css" rel="stylesheet"/>
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="row">
      <div class="small-12 medium-2 large-2 columns" id="firstImage">
        <div class="circle">
          <img class="profile-pic" src="https://t3.ftcdn.net/jpg/03/46/83/96/360_F_346839683_6nAPzbhpSkIpb8pmAwufkC7c5eD7wYws.jpg">
    
        </div>
        <div class="p-image">
          <i class="fa fa-camera upload-button"></i>
          <input class="file-upload" type="file" accept="image/*" />
        </div>
      </div>
    
      <div class="small-12 medium-2 large-2 columns" id="secondImage">
        <div class="circle">
          <img class="profile-pic" src="https://t3.ftcdn.net/jpg/03/46/83/96/360_F_346839683_6nAPzbhpSkIpb8pmAwufkC7c5eD7wYws.jpg">
    
        </div>
        <div class="p-image">
          <i class="fa fa-camera upload-button"></i>
          <input class="file-upload" type="file" accept="image/*" />
        </div>
      </div>
    </div>

    【讨论】:

    • 完美,谢谢。
    • @SidSss 没问题
    猜你喜欢
    • 2019-08-31
    • 2020-01-10
    • 2014-04-14
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多