在JQuery中删除表行

时间:2011-01-20 05:39:11

标签: jquery jquery-selectors

我在根据复选框从表中删除行时遇到问题。下面是我所做的屏幕截图。这是一张有关航班详情的表格。

alt text

可以添加的最大行是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选择器,它不能像我想要的那样工作。因此,如果那里有人可以帮我删除最后一行(删除全部)的行,并保留用户根据用户选择删除特定航班的功能,我真的很感激。

非常感谢你的帮助。

3 个答案:

答案 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()来执行此操作,并且一旦找不到现有数字就会停止。然后,该数字将用于唯一标识该字段。