2010-10-27 57 views
1

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

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

$(".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语句原来的if语句的else条件下。新的条件语句将用于确定该行是否已到达表格的顶部或表格的底部。那么我可以用它来启用/禁用按钮:表单按钮

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

中的类updown

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

我不知道,如果这方法是最好的,但我想尝试一下。

回答

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 
    } 
}); 
+0

mkoryak,你介意给我一个小例子吗?我不知道这些是如何工作的,或者他们会进入代码... – Mohamad 2010-10-27 16:18:55

+0

我的意思是,如果在if条件中存在结果或不存在if(row.preAll()是一个对象...?){禁用/启用去这里} ...我不知道如何测试jQuery中存在的对象... – Mohamad 2010-10-27 16:26:50

+0

好的。生病提供了一些代码。一秒 – mkoryak 2010-10-27 16:36:20

相关问题