我在根据复选框从表中删除行时遇到问题。下面是我所做的屏幕截图。这是一张有关航班详情的表格。
可以添加的最大行是15行。我想要做的是让用户有权删除哪个特定航班或只删除全部,通过选中所有复选框并按删除行。
以下是用于处理此问题的jquery:
$("input[id$='_del_flight']").click(function() {
var n = $("#" + this.id.slice(0,1) + "_airline_table tr").length;
$("#" + this.id.slice(0,1) + "_airline_table tr").each(function(){
if ( $("input[type=checkbox]",this).is(':checked') ) {
if ( n > 2 ) {
$(this).remove();
n--;
//alert("Value n-- is: " + n);
} else {
$(this).find("input").val('');
$(this).find("input[type=checkbox]").removeAttr("checked");
$(this).find('option:first').attr('selected', 'selected').parent('select');
}
}
});
});
这个jquery做得很好。用户可以选择任何特定的航班详情并删除它们,或者用户可以全部删除它们。
然而,当用户决定全部删除它们时,我所拥有的jquery将从第2行删除行开始(如上图所示为Flight 1)。我需要提出另一种方法,必须从最后一行删除该行,即15号航班,然后是14号航班,13号航班,依此类推。通过使该行的所有输入值为空,我将保留行号2(由航班1使用)。
我确实尝试过使用jquery:gt选择器,它不能像我想要的那样工作。因此,如果那里有人可以帮我删除最后一行(删除全部)的行,并保留用户根据用户选择删除特定航班的功能,我真的很感激。
非常感谢你的帮助。
答案 0 :(得分:0)
尝试这样的事情:
$(":checked").each(function() {
$(this).parent().remove()
});
你可能需要一对父()。parent()取决于你的html的样子。
答案 1 :(得分:0)
抱歉,我无法解决您的代码,所以我只是以不同的方式构建它。我会尝试对它进行适当的评论,以便它仍然有意义。
$("input[id$='_del_flight']").click(function() {
// Get the table with the right ID
var table = $('#' + this.id.slice(0,1) + '_airline_table');
// Get all CHECKED checkboxes within the table
table.find('input[type=checkbox]:checked').each(function () {
// Get the row the checkbox belongs to
var row = $(this).closest('tr');
// Is this the first row?
if (row.index() === 0) {
// Your resetting code
row.find("input").val('');
row.find("input[type=checkbox]").removeAttr("checked");
row.find('option:first').attr('selected', true);
} else {
// Remove the row
row.remove();
}
});
});
答案 2 :(得分:0)
我找到了解决方法。解决方案实际上没有回答我的问题。解决方案是一种解决方案。
我之所以要求如何从最后一行删除表格行的原因是为了使id与数字1保持一致,依此类推。
因为,它只是一个ID,唯一标识字段,因此值可以转到数据库,我只使用任何数字,只要它是唯一的。我编写了jQuery脚本来查找现有的表行,并从与该表行关联的输入之一替换不是数字的任何内容。
然后,我将从另一个表行检查该号码是否存在。如果它存在,我只需添加一个这个数字。我使用.each()来执行此操作,并且一旦找不到现有数字就会停止。然后,该数字将用于唯一标识该字段。