2010-10-27 5 views
1

J'ai une table dans laquelle les utilisateurs peuvent déplacer les éléments vers le haut ou vers le bas d'une unité. J'essaie de désactiver un Move Item Up By One et Move Item Down By One boutons quand une ligne de table atteint le haut ou le bas (devient premier ou dernier). Je ne sais pas comment déterminer quand un article <tr> a atteint le haut ou le bas de la table.Comment déterminer si une ligne de table est la première ou la dernière à utiliser jQuery

C'est ce que j'utilise actuellement, qui gère l'échange des lignes de la table lorsqu'un élément a été déplacé vers le haut ou vers le bas.

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

Je veux ajouter une instruction if imbriquée sous la première instruction if, et une autre instruction if sous la condition else de l'instruction if originale. Les nouvelles instructions conditionnelles seront utilisées pour déterminer si la ligne a atteint le haut de la table ou le bas de la table. Je peux ensuite utiliser pour activer/désactiver les boutons:

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

Les classes de la forme des boutons sont up et down

Alors <form class="up"> <input type="submit"> </form> etc ...

Je ne suis pas sûr si cela l'approche est la meilleure, mais je veux l'essayer.

Répondre

2

Vous pouvez essayer d'utiliser prevAll() et nextAll() sur le tr. si ceux-ci ne donnent aucun résultat, cela signifie que le dit tr est le premier ou le dernier enfant.

$(".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, cela vous dérange-t-il de me donner un petit exemple, s'il vous plaît? Je ne sais pas comment cela fonctionnerait, ou s'ils allaient entrer dans le code ... – Mohamad

+0

Ce que je veux dire est, comment peut voir s'il y a un résultat ou pas dans la condition if ... if (row.preAll() est un objet ...?) {désactiver/activer va ici} ... je ne suis pas sûr de savoir comment tester l'existence d'un objet dans jQuery ... – Mohamad

+0

très bien. Mal fournir du code. une seconde – mkoryak

Questions connexes