我如何使用jQuery确定表行是第一个还是最后一个

时间:2010-10-27 16:12:12

标签: jquery

我有一张桌子,用户可以将项目向上或向下移动一个。当表格行到达顶部或底部(成为第一个或最后一个)时,我正在尝试禁用Move Item Up By OneMove Item Down By One按钮。我不知道如何确定<tr>项目何时到达表格的顶部或底部。

这就是我目前正在使用的,当项目向上或向下移动时,它处理交换表格行。

    $(".up,.down").click(function(){
        var row = $(this).parents("tr:first");
        if ($(this).is(".up")) {
            row.insertBefore(row.prev());
        } else {
            row.insertAfter(row.next());
        }
    });

我想在第一个if语句下添加嵌套if语句,在原始if语句的else条件下添加另一个if语句。新的条件语句将用于确定行是否已到达表的顶部或表的底部。然后我可以使用它来启用/禁用按钮:

$(row).find('.up').find('input').attr('disabled','true');

表单按钮的类是updown

所以<form class="up"> <input type="submit"> </form>等...

我不确定这种方法是否最好,但我想尝试一下。

1 个答案:

答案 0 :(得分:2)

您可以尝试在tr上使用prevAll()和nextAll()。如果那些没有返回结果,则意味着所述tr是第一个或最后一个孩子。

$(".up,.down").click(function(){
    var row = $(this).parents("tr:first");
    if ($(this).is(".up")) {
        row.insertBefore(row.prev());
        if(row.prevAll().length == 0){
           //you just moved a row to the top. this is where you disable the button
           row.find('.up').find('input').attr('disabled','true');
           //the row that was the top before had its up disabled, enable it
           row.prev().find('.up').find('input').removeAttr('disabled');
        } 
    } else {
        row.insertAfter(row.next());
        //do same kind of thing here with nextAll
    }
});