javascript - 一个函数处理多个元素

标签 javascript jquery html

我的页面上生成了 n 次以下 html 代码

<form class="new_comment">
   <input accept="image/png,image/gif,image/jpeg" id="file" 
   class="file_comment" key=comment_id type="file" name="comment[media]">
   <span class="lds-dual-ring"></span>
   <span class="valid_icon" style="display:none;"></span>
</form>

我有以下 jquery

$(document).ready(function(){
  $('#file').on('click touchstart' , function(){
    $(this).val('');
});

//Trigger now when you have selected any file
$("#file").change(function(e) {
  var data = new FormData();
  console.log (e.target)
  console.log(e.target.files)
  var file = e.target.files
  data.append("image", file[0]);
  $(".lds-dual-ring").css('display', 'inline-block');
  $(".valid_icon").css('display', 'none');
  $.ajax({
      url: 'https://api.imgur.com/3/image',
      headers: { Authorization: "Client-ID {{client-id}}" },
      type: 'POST',
      data: data,
      cache: false,
      contentType: false,
      processData: false,
      success: function(data) {
        $(".lds-dual-ring").css('display', 'none');
        $(".valid_icon").css('display', 'inline-block');
        console.log(data.data.link);
        $('#media_url').val(data.data.link);
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
  })
});
});

这段代码运行良好。当用户从桌面上选择图像时,该图像会上传到 imgur 上,并会出现一个验证图标。

它适用于第一种形式的评论,但不适用于页面上的所有其他相同形式。

我也有关于非唯一 id 的警告,我明白为什么我有它,但我不知道如何才能为不确定数量的表单只拥有一个函数或样式类

最佳答案

您说过您了解为什么会收到有关非唯一 ID 的警告,但我会为 future 的查看者简要介绍一下它。

ID(例如,#myId)必须在任何页面上仅出现一次。就像现实生活中的 ID 号一样,它们指的是特定的实体,因此应该只代表单个元素。这也是为什么 ID 的 JavaScript 选择器是单一的 (document.getElementById)。

另一方面,类(例如.myClass)可以出现多次。就像在现实生活中一样,您可以将相似的项目分组并集体引用它们。因此,类的选择器是复数 (document.getElementsByClassName)。

看起来您的代码已经设置为可以处理类——您只需更改选择器即可。由于您的文件输入已经有一个类,因此您只需替换引用该输入的选择器,以便它们引用 class 属性而不是 id

尝试将 $("#file") 替换为 $(".file_comment"),它应该会停止向您发出警告。

关于javascript - 一个函数处理多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560594/

相关文章:

div 上的 Javascript onclick 事件不起作用

javascript - 如何使右侧指令框上的箭头指向左侧焦点所在的字段?

javascript - jQuery 自动完成;希望 Return 键表现为 Tab

javascript - 在文本输入更改后运行的 AngularJS 指令

javascript - yargs 选项的可选参数

Javascript 图像比较

javascript - 当动态添加输入字段且 ajax 不起作用时,JQuery 单击“浏览”

javascript - 在 JQuery 中查找节点的成本是多少?

javascript - 带有 css3 和 html5 的简单窗口系统渲染缓慢。如何加快速度?

html - 表格单元格中的图像全宽错误高度尺寸