javascript - 为什么在我单击添加按钮时每次单击都会多次附加我的 <i> 标记?

标签 javascript jquery html

我正在使用 HTML、CSS 和 jQuery 制作待办事项列表。因此,基本上,当用户键入一个事件并按下“+”按钮时,它会连同“删除”(Font Awesome 回收站)图标一起添加到列表中,以便用户可以删除该事件。我已经使用 .append() 函数实现了这个。但是,当用户添加第一项时,会出现一个删除按钮。然而,对于每个其他列表,删除按钮的数量成倍增加。 (例如,当用户添加第二个项目时,该项目有两个删除按钮,而当他们添加第三个项目时,该项目有三个删除按钮)。我不明白为什么会这样,解决这个问题的最佳方法是什么?

我在 .listInput 上使用了 .append() 并附加了 .newItem。 然后我在 .newItem 上使用了 .append() 并附加了 jar 头图标。

$(".enter").click(function() {
  var $item = $('input[name=add]').val();
  if ($item.length > 0) {
    $(".listInput").append('<li class="newItem animated fadeIn">' + $item + '</li>');
    $('.newItem').append('<i class="animated fadeIn far fa-trash-alt fa-1x"></i>');
  } else {
    alert("Enter an acitvity to add");
  }
})
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="takeInput">
  <input type="text" name="add" value="Add Your Item Here">
  <i class="enter fas fa-plus fa-3x"></i>
</div>

<ul class="listInput">
</ul>

我只希望每个列表项有一个垃圾桶图标。

最佳答案

$('.newItem').append() 将向 所有newItem 的元素附加一些内容,而不仅仅是一个你刚刚添加。要解决这个问题,只需使用一个附加项:

$(".enter").click(function() {
  var $item = $('input[name=add]').val();
  if ($item.length > 0) {
    $(".listInput").append('<li class="newItem animated fadeIn">' + $item + '<i class="animated fadeIn far fa-trash-alt fa-1x"></i></li>');
  } else {
    alert("Enter an acitvity to add");
  }
})
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="takeInput">
  <input type="text" name="add" value="Add Your Item Here">
  <i class="enter fas fa-plus fa-3x"></i>
</div>

<ul class="listInput">
</ul>

关于javascript - 为什么在我单击添加按钮时每次单击都会多次附加我的 <i> 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55852318/

相关文章:

javascript - 将具有不同尺寸的并排图像动态调整为相同高度

javascript - Dimple.js barGap 函数不起作用

html - LightSwitch 日历屏幕

javascript - NodeJS HTTP response.redirect 不存在?

javascript - VueJS 如何从方法而不是模板中监听事件

jQuery 'removeClass' 无法在粘性导航栏上工作

jquery - 简单的 jQuery 在 cakephp 中不起作用

javascript - 如何使元素中的文本仅在基于百分比而不是像素查看页面的特定部分时出现?

javascript - HTML Canvas Scratcher,当图像的百分比被划伤时显示一个 div

html - 如何删除 IE 中链接周围的边框?