jquery - JQuery将按钮一次添加到列表项
问题描述
每当用户按下“添加项目”按钮时,我都会将项目添加到列表中。发生这种情况时,应使用 JQuery 添加列表项。此外,还有另一个功能将为每个列表项添加一个删除按钮,以便可以删除列表项。
我的问题是每次按下“添加项目”按钮时都会触发 addDeleteButton 函数,从而添加许多删除按钮。我的 addDeleteButton 获取所有列表项的 JQuery 对象并遍历它们。循环将查找现有的删除按钮,如果当前没有删除按钮,则仅添加删除按钮。但是我似乎找不到写这个条件的正确方法。我该怎么做才能确保仅在没有上一个按钮的情况下才添加删除按钮?
//gets element with id list so items can be appended to it
let list = $('#list');
//adds a delete button to the li element (only one button added per li)
function addDeleteButton() {
let li = $('li');
let button = '<button>delete</button>';
//this condition should limit the number of buttons added to each li
if (li.children(button) < 1) {
li.append(button);
}
}
//function adds new item to list
function addListItem() {
let li = '<li>' + input.val() + '</li>';
list.append(li);
addDeleteButton();
}
//listens for a click of the "Add" button which triggers list item to be added to list
$('#addLiButton').on('click', addListItem);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="list">
<input type="text" name="item" id="input" />
</form>
<div id="addLiButton">Add Item</div>
<ol id="list"></ol>
解决方案
您可以li
使用最后添加$('li:last')
,然后检查按钮的长度是否0
在其中,li
然后仅添加删除按钮。
演示代码:
let list = $('#list');
let input = $('#input');
function addDeleteButton() {
let li = $('#list li:last'); //get last li added
let button = '<button>delete</button>';
//then check if the li doesnot has button in it
if (li.find("button").length == 0) {
li.append(button); //add that inside button
}
//or directly append button i.e : li.append(button);
}
function addListItem() {
let li = '<li>' + input.val() + '</li>';
list.append(li);
addDeleteButton();
}
$('#addLiButton').on('click', addListItem);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="list">
<input type="text" name="item" id="input" />
</form>
<div id="addLiButton">Add Item</div>
<ol id="list"></ol>
推荐阅读
- entity-framework-core - 调用标准库 DLL 时无法加载文件或程序集“Microsoft.EntityFrameworkCore”
- visual-studio-code - phpcs:请求工作区/配置失败并显示消息:无法找到 phpcs
- java - 为什么 Java *sort* HashMap 条目,即使它不应该?
- python - 当我计算列表中连续元素之间的差异时,如何保持列表中的第一个元素不变?
- c# - 无法加载文件或程序集 CefSharp.Core.Runtime
- typescript - 如何在 TSDoc 中记录剩余参数
- keras - 无法保存 Keras 模型,这是一个错误吗?
- angular - 以编程方式重置 Angular 模板驱动的表单
- python - 如何从 Python 中的 str 日期时间获取上个月?
- python - MongoDB 和 Pymongo,在所有集合中查询 FULLTEXT