我有一张桌子,用户可以将项目向上或向下移动一个。当表格行到达顶部或底部(成为第一个或最后一个)时,我正在尝试禁用Move Item Up By One
和Move 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');
表单按钮的类是up
和down
所以<form class="up"> <input type="submit"> </form>
等...
我不确定这种方法是否最好,但我想尝试一下。
答案 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
}
});