javascript - 删除页面中的内容时,刷新所有值
问题描述
我有一个项目清单。我可以创建一些项目。问题是当我按下删除按钮时,我希望所有值都刷新和更改。我怎样才能做到这一点?
例如,当我删除第三个数字时,第四个标签将是第三个。
$(document).on("click", ".addnew", function() {
id = this.id;
var idsh = parseInt(id.substr(3));
var ids = parseInt(id.substr(3)) + 1;
document.getElementById("ad_" + idsh).style.display = "none";
kanban = document.getElementById("kanban");
var btn = document.createElement("p");
btn.id = "main_" + ids;
btn.innerHTML =
'<span type="text" id="co_' + ids + '" class="counter text-center bg-success text-white" >' + ids + ' </span>' +
'<span id="mo_' + ids + '" class="formulbitti text-center bg-success text-white" > inner </span>' +
'<button id="de_' + ids + '" class="delete text-center bg-success text-white" >delete</button> ' +
'<button type="text" id="ad_' + ids + '" class="addnew text-center bg-success text-white" >add</button>';
kanban.appendChild(btn);
});
$("body").on("click", ".delete", function() {
id = this.id;
var ids = id.substr(3);
$('#main_' + ids).remove();
});
<script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<div id="kanban">
<span type="text" id="co_1" class="counter text-center bg-success text-white">1</span>
<span type="text" id="mo_1" class="formulbitti text-center bg-success text-white">inner</span>
<button type="text" id="de_1" class="delete text-center bg-success text-white">delete</button>
<button type="text" id="ad_1" class="addnew text-center bg-success text-white">add</button>
</div>
解决方案
不要使用增量id
属性。正如您在代码中看到的那样,它们增加了不必要的复杂性并且绝对没有任何好处。
完成您需要的最佳方法是使用 DOM 遍历将元素相互关联。您需要对 HTML 进行的唯一调整是添加一个新元素来对和元素div
进行分组。单击按钮后,您可以从那里检索最近的容器并克隆/删除它。span
button
closest()
.row
这样做的好处是 HTML 变得标准化,并且使用它的 JS 是相同的,无论内容或位置如何。
要解决在执行操作时更新计数器的问题,请创建一个函数,该函数遍历所有.counter
元素并根据它们在 DOM 中的索引更新它们的文本。
最后请注意,button
元素有一个type
ofbutton
或submit
,从不text
。
说了这么多,试试这个:
let $kanban = $('#kanban');
let updateCounters = () => $kanban.find('.counter').text(i => i + 1);
$(document).on("click", ".addnew", e => {
$(e.target).closest('.row').clone().appendTo($kanban);
updateCounters();
});
$(document).on("click", ".delete", e => {
$(e.target).closest('.row').remove();
updateCounters();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<div id="kanban">
<div class="row">
<span type="text" class="counter text-center bg-success text-white">1</span>
<span type="text" class="formulbitti text-center bg-success text-white">inner</span>
<button type="button" class="delete text-center bg-success text-white">delete</button>
<button type="button" class="addnew text-center bg-success text-white">add</button>
</div>
</div>
最后要注意的一件事是,在每一行上都有一个表级别的“添加”按钮有点奇怪。在内容的顶部或底部有一个添加按钮会更有意义。
推荐阅读
- arangodb - pyArango 与 Foxx 微服务
- c# - 对 Xml 格式函数进行单元测试
- java - 当我使用 jsoup 库请求 URL 时发生错误的响应代码
- react-native - 在 Android (RN 0.61.5) 中反应原生自动链接问题
- docker - 为什么我得到 x509:Azure DevOps docker push to registry 上的未知权威签署的证书
- node.js - 在 MongoDB 中,如何根据另一个字段有条件地更新具有不同值的文档
- visual-studio-code - Visual Studio 代码导入自定义 css 和 js 扩展
- php - 如何在 PHP 中理解这个算法
- mongodb - Teiid Spring Boot:如何将特定的 MongoDB 集合公开为 OData 实体?
- php - 根据输入,使用 PHP 创建 TABLE