IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

insertAfter ne se comporte pas comme insertBefore


Sujet :

jQuery

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut insertAfter ne se comporte pas comme insertBefore
    Bonjour à tous ,

    J'ai un tableau de liste avec un checkbox sur chaque ligne
    Le but est de faire un UP ou DOWN (bouton sur l'entête du tableau)pour les lignes qui sont cochés

    Mon problème c'est que si je coche deux lignes et je fais UP les 2 lignes cochées montent bien après la precedente ligne

    Par contre si je sélectionne 2 lignes et je fais DOWN là ça ne bouge pas , le insertAfter ne se comporte pas comme insertBefore


    Voici le code

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    <button id="up">Up</button><button id="down">Down</button>
    <table id="rowclick" class="table table-striped table-bordered table-hover flip-content">
       <thead class="flip-header">
          <tr>
             <th colspan="2">
                Rank												
             </th>
             <th>
                ID												
             </th>
             <th>
                Product 											
             </th>
             <th>&nbsp;</th>
          </tr>
       </thead>
       <tbody>
          <tr class="odd gradeX parent parent-hide" id="item-2119">
             <td>
                16														
             </td>
             <td>
                2119														
             </td>
             <td>
               test														
             </td>
             <td class="center">
             <input type="checkbox">
             </td>
          </tr>
          <tr class="odd gradeX parent parent-hide" id="item-2120">
             <td>
                17														
             </td>
             <td>
                2120														
             </td>
             <td>
               test1													
             </td>
             <td class="center">
             <input type="checkbox">
             </td>
          </tr>
          <tr class="odd gradeX parent parent-hide" id="item-2121">
             <td>
                18														
             </td>
             <td>
                2121														
             </td>
             <td>
               Test2														
             </td>
             <td class="center">
             <input type="checkbox">
             </td>
          </tr>
          <tr class="odd gradeX parent parent-hide" id="item-2122">
             <td>
                19														
             </td>
             <td>
                2122														
             </td>
             <td>
                Test 3														
             </td>
             <td class="center">
             <input type="checkbox">
             </td>
          </tr>
          <tr class="odd gradeX parent parent-hide" id="item-2123">
             <td>
                20														
             </td>
             <td>
                2123														
             </td>
             <td>
               test4														
             </td>
             <td class="center">
             <input type="checkbox">
             </td>
          </tr>
          <tr class="odd gradeX parent parent-hide" id="item-2464">
             <td>
                99999														
             </td>
             <td>
                2464														
             </td>
             <td>
                test 5														
             </td>
             <td class="center">
             </td>
          </tr>
     
       </tbody>
    </table>
     
     
     
    <script type="text/javascript">
        $(document).ready(function(){
            $("#up").click(function(event){
                    event.preventDefault();
                    $("#rowclick").find("input:checkbox:checked").each(function(){
                            var check_index = $(this).closest('tr').index();
                            //alert(check_index);
                            //var check = $(this).closest('tr');
                            var current = $(this).closest('tr')
                                var previous = current.prev('tr');
                                if(previous.length !== 0){
                                    current.insertBefore(previous);
                                    }
                    });
            });
     
            $("#down").click(function(event){
                    event.preventDefault();
                    $("#rowclick").find("input:checkbox:checked").each(function(){
                            var check_index = $(this).closest('tr').index();
                            //alert(check_index);
                            //var check = $(this).closest('tr');
                            var current1 = $(this).closest('tr')
                                    var next = current1.next('tr');
                                    if(next.length !== 0){
                                            alert("OK");
                                        current1.insertAfter(next);
                                    }else{
                                            alert("KO");
                                    }
                    });
            });
     
        });
     
    </script>

    j'ai mis un alert('OK'); et ça rentre bien dedans sauf que le insertAfter ne comporte/marche pas comme insertBefore si on selection plusieurs lignes

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    as tu essayé After() ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Oui j'ai essayé avec after() mais ça ne marche pas.

    insertAfter() fonctionne seulement pour une seule ligne séléctionnée mais si je selectionne plusieurs lignes ça ne marche pas

  4. #4
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    la solution est d'inverser l'ordre de récupération des lignes quand on fait DOWN et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $('#down').on('click',function(e){
        		e.preventDefault();
        		$($('#rowclick').find('tr').get().reverse()).each(function(){
     
        			if($(this).find('input[type=checkbox]').is(':checked')){
        				var current1 = $(this).closest('tr')
    					var next = current1.next('tr');
    					if(next.length !== 0){
    				    	current1.insertAfter(next);
    					}
        			}
     
        		});
     
        	});
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EJB Stateful] EJB stateful ne se comporte pas comme tel
    Par Yiempia dans le forum Java EE
    Réponses: 5
    Dernier message: 01/02/2013, 11h44
  2. directx 9 ne veut pas s'installer<pas comme celui qui exi
    Par crazy windows dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 14/02/2006, 17h50
  3. [Référencement] Google ne référence pas comme je le souhaite
    Par inferno66667 dans le forum Référencement
    Réponses: 4
    Dernier message: 12/12/2005, 14h24
  4. time.sleep() ne fonctionne pas comme souhaité
    Par Olivier_ dans le forum Général Python
    Réponses: 3
    Dernier message: 19/11/2005, 01h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo