javascript - 点击后替换图标元素
问题描述
我在 jQuery 中有这个脚本:
$('.data-table').on('click', 'td', function () {
var row = table.row(this).data();
let mainProduct = {{ $id }};
$.get("{{ route('related.product.add')}}" + '/' + mainProduct + '/' + row.id, function (data, status) {});
$.get("{{ route('related.product.destroyAjax') }}" + '/' + mainProduct + '/' + row.id, function (data, status) {});
});
此代码从我的数据库中添加和删除项目(脚本发布到 PHP / Laravel)。
我有一个删除项目的跨度:
<i id="1" class="fas fa-minus removeItem"></I>
并添加一个项目:
<i id="1" class="fas fa-plus addItem"></I>
ID 编号因产品而异。
我想点击“removeItem”(减号图标)添加“addItem”(加号图标)。
单击“addItem”(加号图标)后,将出现一个“removeItem”元素(减号图标)。
因此,如果我单击添加元素 - 然后我们替换图标 n 并删除元素,反之亦然。因此,如果我单击该图标以删除该项目-它应该会出现以供添加。
在我的代码中,我有两种添加和删除方法。我知道他们不可能同时出现。我只是不知道如何将它们分配给单个按钮。
解决方案
更改您的 onclick 事件,如下所示:
$('.data-table').on('click', 'td i', function() {
var rowId = $(this).attr('id');
let mainProduct = {{ $id }};
let record = this;
if ($(record).hasClass('addItem')) {
$.get("{{ route('related.product.add') }}" + '/' + mainProduct + '/' + rowId, function(data, status) {});
$(record).addClass('removeItem fa-minus');
$(record).removeClass('addItem fa-plus');
} else {
$.get("{{ route('related.product.destroyAjax') }}" + '/' + mainProduct + '/' + rowId, function(data, status) {});
$(record).addClass('addItem fa-plus');
$(record).removeClass('removeItem fa-minus');
}
console.log(record);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
您需要分配this
给点击功能上的变量
var element = this;
服务响应后,调用以下函数并element
作为参数传递:
function switchState(element) {
if($(element).hasClass('addItem')) {
$(element).addClass('removeItem fa-minus');
$(element).removeClass('addItem fa-plus');
} else {
$(element).addClass('addItem fa-plus');
$(element).removeClass('removeItem fa-minus');
}
}
推荐阅读
- numerical-computing - 如何计算数值稳定的 log(exp(x)-exp(y))
- mysql - 如何加快我的 MySQL 查询(JOINs + GROUP BY)
- javascript - 将组件直接渲染到模板中
- tfs - TFS 2017 本地 Epic 的进展
- python - Python selenium - 使用动作链选择一个元素
- python - 将一系列 DateTime 值转换为正确的格式
- java - 垃圾收集器的作用
- javascript - JavaScript:在递归之间需要一个共享数组才能将结果推送到
- android - 即使在添加 ViewModel 后配置也会发生变化:Android 架构组件
- python - python3 不允许 urllib 导入