1 回答
TA贡献1780条经验 获得超1个赞
有很多方法可以做到这一点。
一种方法是在所有行中都有两个按钮,并使用 CSS 隐藏其中一个或另一个。
例如:
.table_1 .borrar { display:none; }
.table_2 .agregar { display:none; }
根据信息的不同,您可能不希望人们打开检查器、显示按钮并单击它。没什么大不了的,但就像我说的,这取决于你用它做什么。
如果您想对其进行编码,则必须在附加按钮之前修改按钮。
像这样的东西
var row = $(this).closest('tr');
var button = row.find('.btn');
button.removeClass('agregar').addClass('borrar');
button.find('.glyphicon').removeClass('glyphicon-plus').addClass('glyphicon-trash');
但是等等,您原来的“点击”事件仍在被触发。为什么?因为即使您交换了类,您也已为每个类附加了一个方法。
为了让您的新按钮正常工作,您需要附加这样的方法
$("body").on("click", ".agregar", function(event){ ... }
$("body").on("click", ".borrar", function(event){ ... }
这将告诉代码在每个 .agregar 和 .borrar 元素事件上运行(如果它们是新添加的)。
这是一个例子
$(document).ready(function() {
$("body").on("click", ".agregar", function(event) {
event.preventDefault();
var row = $(this).parents('tr');
var button = row.find('.btn');
button.removeClass('agregar').addClass('borrar');
button.find('.glyphicon').removeClass('glyphicon-plus').addClass('glyphicon-trash');
$('#tablaSala').append(row);
});
$("body").on("click", ".borrar", function(event) {
event.preventDefault();
var row = $(this).parents('tr');
var button = row.find('.btn');
button.removeClass('borrar').addClass('agregar');
button.find('.glyphicon').removeClass('glyphicon-trash').addClass('glyphicon-plus');
$('#tablaDisponibles').append(row);
});
});
table {
margin-bottom: 40px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tablaDisponibles" border="1">
<tr>
<td>Row 1</td>
<td><button class="btn agregar"><span class="glyphicon glyphicon-plus"></span></button></td>
</tr>
</table>
<table id="tablaSala" border="1">
<tr>
<td>Row 2</td>
<td><button class="btn borrar"><span class="glyphicon glyphicon-trash"></span></button></td>
</tr>
</table>
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报