我有一张桌子
<table id="favoriteFoodTable">
<th>
Food Name:
</th>
<th>
Restaurant Name:
</th>
<th>
</th>
<?php while ($row = $foods->fetch()) {
?>
<tr>
<td>
<?php echo $row['foodName']; ?>
</td>
<td>
<?php echo $row['restaurantName']; ?>
</td>
<td>
<a class="deleteLink" href="" >delete</a>
</td>
</tr>
<?php } ?>
</table>
我使用这个jquery函数,所以当用户点击删除时,行的背景会改变,然后行会删除
$(document).ready(function() {
$("#favoriteFoodTable .deleteLink").on("click",function() {
var td = $(this).parent();
var tr = td.parent();
//change the background color to red before removing
tr.css("background-color","#FF3700");
tr.fadeOut(400, function(){
tr.remove();
});
});
});
只是后台正在改变,但行没有删除,为什么?怎么解决?
答案 0 :(得分:58)
该行已被删除,但由于点击会使您按照该链接进行操作,因此会在刷新页面时立即恢复该行。
在回调结束时添加return false;
或event.preventDefault();
以防止默认行为:
$(document).ready(function() {
$("#favoriteFoodTable .deleteLink").on("click",function() {
var tr = $(this).closest('tr');
tr.css("background-color","#FF3700");
tr.fadeOut(400, function(){
tr.remove();
});
return false;
});
});
请注意,我使用closest
来获得更可靠的代码:如果介于其他元素之间,则仍会找到tr
。
答案 1 :(得分:3)
您忘记做的是在链接中设置哈希值。 例如:
<a class="deleteLink" href="" >delete</a>
应该是
<a class="deleteLink" href="#" >delete</a>
或
return false;
在
结束时$(document).ready(function() {
$("#favoriteFoodTable .deleteLink").on("click",function() {
...
return false;
});
});
答案 2 :(得分:2)
这是另一种选择。
function DeleteRowOfProductTable(productID){
$('#YourTableId tr').each(function (i, row) {
var $row = $(row);
var productLabelId = $row.find('label[name*="Product_' + productID + '"]');
var $productLabelIdValue = $productLabelId.text();
if (parseInt(productID) == parseInt($productLabelIdValue))
{
$row.remove();
}
});
}
答案 3 :(得分:0)
如果您希望一次只选择表格中的一行
$("#data tr").click(function() {
var selected = $(this).hasClass("highlight");
$("#data tr").removeClass("highlight");
if(!selected)
$(this).addClass("highlight");
答案 4 :(得分:-1)
尝试
var tr = $(this).closest('tr');
tr.detach();
为我工作!