javascript - 使用切换元素(jQuery)从另一个表中动态添加/删除元素
问题描述
我有一张带有几个按钮的表格,我花了很长时间试图弄清楚是否可以删除我添加到单独表格中的按钮。我已经为此寻找了很长时间,并尝试了在这里找到的几种不同的方法,但没有成功。我添加了一个片段。
到目前为止,我可以通过直接单击它们来删除表格中的按钮(感谢此处找到的资源!)
我的目标很简单,当按钮处于活动状态时,它被添加到表(数组?)当按钮被关闭时,按钮也从数组中删除。
任何帮助或提示都会很棒!
const buttons = document.querySelectorAll("button");
buttons.forEach(button => button.onclick = toggle);
var counter = 0;
function toggle(event) {
const button = event.target;
button.classList.toggle('active');
var addtolist = $('<button class="remove" value="' + (this) + '" data-id="' + counter + '">' + (this).textContent + '</button>');
var containerDiv = $("<div />");
containerDiv
.append(addtolist);
counter++;
if (button.classList.contains('active')) {
$('#selectedcourses').append(containerDiv);
} else {
var id = $(this).data("id");
$("*[data-id=" + id + "]").remove(); //This block doesn't do anything
//$('#selectedcourses').find("*[data-id=" + id + "]").remove(); //neither does this
//$('#selectedcourses').remove(); deletes everything and you cant add it back
}
$('.remove').click(function() { //This block of delete code works...
var id = $(this).data("id"); //I would like this to work when I deselect a button
$("*[data-id=" + id + "]").remove();
});
};
table,
tr,
td {
border: solid 2px #41403E;
border-collapse: collapse;
}
.btn {
background-color: #5fc0e3;
}
.btn.active {
background-color: #ff00f2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td>
<p>2<sup>nd</sup> year autumn semester</p>
</td>
<td>
<p>2<sup>nd</sup> year spring semester</p>
</td>
<td>
<p>3<sup>rd</sup> year autumn semester</p>
</td>
<td>
<p>3<sup>rd</sup> year spring semester</p>
</td>
<td>
<p>4<sup>th</sup> year autumn semester</p>
</td>
</tr>
<tr>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="13">Some class 13op</button>
<br>
</td>
<td></td>
</tr>
<tr>
<td>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
</tr>
<tr>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="6">Some class 6op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
</tr>
<tr>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 3op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
</tr>
</table>
<table class="selectedcourses">
<tr>
<td>
<div id="selectedcourses"></div>
</td>
</tr>
</table>
解决方案
如果您设置为不活动,它将删除外部按钮,
如果您单击/删除外部按钮,它将设置表格内的按钮不活动
var counter = 0;
const buttons = document.querySelectorAll("button");
buttons.forEach(button => button.setAttribute('data-buttonid', counter++));
buttons.forEach(button => button.onclick = toggle);
function toggle(event) {
const button = event.target;
button.classList.toggle('active');
var buttonId = $(button).attr("data-buttonid");
var addtolist = $('<button class="remove" value="' + this.value + '" data-id="' + buttonId + '">' + (this).textContent + '</button>');
var containerDiv = $("<div />");
containerDiv.append(addtolist);
if (button.classList.contains('active')) {
$('#selectedcourses').append(containerDiv);
}
else {
$("button[data-id=" + buttonId + "]").remove();
}
};
$(document).on('click', '.remove', function() {
var bid = $(this).data('id')
$("button[data-buttonid=" + bid + "]").toggleClass('active');
$(this).remove();
});
table,
tr,
td {
border: solid 2px #41403E;
border-collapse: collapse;
}
.btn {
background-color: #5fc0e3;
}
.btn.active {
background-color: #ff00f2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<td>
<p>2<sup>nd</sup> year autumn semester</p>
</td>
<td>
<p>2<sup>nd</sup> year spring semester</p>
</td>
<td>
<p>3<sup>rd</sup> year autumn semester</p>
</td>
<td>
<p>3<sup>rd</sup> year spring semester</p>
</td>
<td>
<p>4<sup>th</sup> year autumn semester</p>
</td>
</tr>
<tr>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="13">Some class 13op</button>
<br>
</td>
<td></td>
</tr>
<tr>
<td>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
</tr>
<tr>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="6">Some class 6op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
</tr>
<tr>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 4op</button>
<br>
<button class="btn" value="5">Some class 5op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
</td>
<td>
<button class="btn" value="4">Some class 3op</button>
<br>
<button class="btn" value="6">Some class 6op</button>
<br>
</td>
<td>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="3">Some class 3op</button>
<br>
<button class="btn" value="4">Some class 4op</button>
<br>
</td>
</tr>
</table>
<table class="selectedcourses">
<tr>
<td>
<div id="selectedcourses"></div>
</td>
</tr>
</table>
推荐阅读
- python - Discord Python Rewrite - Cogs 错误(client.load_extention(cog) AttributeError: 'Bot' object has no attribute 'load_extention')
- javascript - JavaScript 减少数组以在 Object 中找到匹配项
- r - 如何将日志刻度线放在辅助轴上?
- javascript - 在列表中定位产品并增加/减少其数量
- python - 用美丽的汤从字典中提取
- named-entity-recognition - 使用 brat 的注释工具配置/自动注释服务
- android - React Native 移除输入边框(适用于 Android 4.4.2)
- java - 如何从 Flutter 中的 RSA 私钥生成令牌?
- git - git log origin/develop 给出“致命:模棱两可的论点”
- java - 如何将java桥http本地设置为静态端口?